2009-07-21 44 views
2

幫助,我需要創造什麼我認爲應該是一個簡單的GUI。我幾乎沒有構建GUI的經驗。我是一名視覺學習者,'wxPython In Action'不會幫助我。我沒有很好地學習博士的書。我正在使用Python 2.6。互聯網上的很多例子在Python 2.6中不起作用。需要與wxPython的(新手)

我需要創建一個GUI,底部有3列和一些按鈕。

在第一遍中,每個列的將只是多行文本輸入。我創建了一個使用3個面板確實有3列的GUI,但我無法獲得多行文本輸入來填充整個面板。我試着用boxsizer和flexgridsizer與一個面板,但再次,我無法得到多行文本輸入來填充整個列。

某處,我看到的幾乎正是我一直在尋找一個例子,但我既沒有加入書籤,或者是一個例子,我忘了在哪裏。這個例子有3列,其中每列可以像電子表格中那樣進行寬度調整。

我已經在這了好幾天,我還沒有取得任何進展。我正在尋找的東西類似於Sashwindow,但有3列。

我已經試過多個面板,boxsizers與flexgridsizers但沒有運氣。我已經完成了所有的wxPython演示,沒有任何問題。也許是因爲我尋找的東西太簡單了,不值得一個演示。真正的程序中的一些列將使用可選列表和網格,但首先我需要從簡單可能的情況開始。

任何人都可以提供一個簡約程序,顯示3列與多行文本輸入填充整個列?我會弄清楚如何在底部添加按鈕。

謝謝

回答

4

你應該看看wxGlade。這是一個可以用來創建用戶界面的方便的小型GUI生成器。之後,您還可以查看它生成的代碼並從那裏開始。

編輯:好了,這裏有雲:

在wxGlade,創建一個新的框架。添加三個插槽的水平尺寸。將TextCtrl添加到第一個插槽。在文本控件的佈局頁面上,檢查wxEXPAND並將比例設置爲1;在Widget頁面上,選中wxTE_MULTILINE。將文本控件複製到剪貼板並粘貼到剩餘的兩個插槽中。

下面是wxGlade生成的代碼:

#!/usr/bin/env python 
# -*- coding: iso-8859-15 -*- 
# generated by wxGlade 0.6.3 on Tue Jul 21 20:00:54 2009 

import wx 

# begin wxGlade: extracode 
# end wxGlade 



class MyFrame(wx.Frame): 
    def __init__(self, *args, **kwds): 
     # begin wxGlade: MyFrame.__init__ 
     kwds["style"] = wx.DEFAULT_FRAME_STYLE 
     wx.Frame.__init__(self, *args, **kwds) 
     self.text_ctrl_1 = wx.TextCtrl(self, -1, "", style=wx.TE_MULTILINE) 
     self.text_ctrl_1_copy = wx.TextCtrl(self, -1, "", style=wx.TE_MULTILINE) 
     self.text_ctrl_1_copy_1 = wx.TextCtrl(self, -1, "", style=wx.TE_MULTILINE) 

     self.__set_properties() 
     self.__do_layout() 
     # end wxGlade 

    def __set_properties(self): 
     # begin wxGlade: MyFrame.__set_properties 
     self.SetTitle("frame_1") 
     # end wxGlade 

    def __do_layout(self): 
     # begin wxGlade: MyFrame.__do_layout 
     sizer_1 = wx.BoxSizer(wx.VERTICAL) 
     sizer_2 = wx.BoxSizer(wx.HORIZONTAL) 
     sizer_2.Add(self.text_ctrl_1, 1, wx.EXPAND, 0) 
     sizer_2.Add(self.text_ctrl_1_copy, 1, wx.EXPAND, 0) 
     sizer_2.Add(self.text_ctrl_1_copy_1, 1, wx.EXPAND, 0) 
     sizer_1.Add(sizer_2, 1, wx.EXPAND, 0) 
     self.SetSizer(sizer_1) 
     sizer_1.Fit(self) 
     self.Layout() 
     # end wxGlade 

# end of class MyFrame 


if __name__ == "__main__": 
    app = wx.PySimpleApp(0) 
    wx.InitAllImageHandlers() 
    frame_1 = MyFrame(None, -1, "") 
    app.SetTopWindow(frame_1) 
    frame_1.Show() 
    app.MainLoop() 

希望幫助:-)

+0

我一直在使用寶兒構造函數。像wxGlade一樣,只有當你已經知道你在做什麼時纔有用。我已經完成了wxPython和Boa構造函數上的ShowMeDo教程(尤其是視頻#8多次)。我不會問我是否已經嘗試過所有的東西。 – Jarek 2009-07-21 17:33:05