我正在學習wxPython,並且我正在嘗試寫一個學生信息管理器。我一直在編寫CLI程序很多年,所以我沒有太多的GUI製作經驗。wxPython:sizers,grids讓我瘋狂
首先,我畫了我的UI的藍圖。
然後,我試圖讓它在wxPython中,但sizers真的讓我發瘋。我以前從未使用過任何類型的篩選器! (Visual Basic中是我學到的第一語言^ __ ^)
最後,我寫了這個代碼:
import wx
from wx.lib import sheet
class Sheet(sheet.CSheet):
def __init__(self, parent, row, col):
sheet.CSheet.__init__(self, parent)
self.row = self.col = 0
self.SetNumberRows(row)
self.SetNumberCols(col)
for i in range(row):
self.SetRowSize(i, 20)
class ChartPanel(wx.Panel):
'''This is the panel for the chart, but the still working on it. '''
def __init__(self, parent):
wx.Panel.__init__(self, parent)
class MainPanel(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
sizer = wx.GridBagSizer(5, 5)
# However, just put the chart into main frame.
chart = ChartPanel(self)
chart.SetBackgroundColour("blue")
Students = Sheet(self, 5, 2)
History = Sheet(self, 2, 2)
button1 = wx.Button(self, label="Button #1")
button2 = wx.Button(self, label="Button #2")
button3 = wx.Button(self, label="Button #3")
sizer.Add(Students, pos=(0, 0), span=(5, 2), flag=wx.EXPAND)
sizer.Add(History, pos=(0, 2), span=(2, 2), flag=wx.EXPAND)
sizer.Add(chart, pos=(2, 2), span=(3, 2), flag=wx.EXPAND)
sizer.Add(button1, pos=(5, 0), span=(1, 1))
sizer.Add(button2, pos=(5, 1), span=(1, 1))
sizer.Add(button3, pos=(5, 2), span=(1, 1))
sizer.AddGrowableCol(5)
sizer.AddGrowableRow(5)
self.SetSizer(sizer)
self.Fit()
class MainFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, title="BoxSizer Example")
panel = MainPanel(self)
self.Show()
if __name__ == "__main__":
app = wx.App(False)
frame = MainFrame()
app.MainLoop()
但這個程序是醜陋和馬車。有人可以教我如何以智能的方式使用sizers,並幫助我修改我的代碼嗎?
非常感謝!
我知道你的感受,所以首先現在很多很多人都明白你徹底沮喪......瞭解施膠劑我試着閱讀關於sizer的許多文檔,但是我最終通過將它想像爲HTML中的CSS來獲得它,所以請閱讀這個http://www.htmldog。com/guides/cssbeginner/margins/AND後面的頁面,我發現它很好地解釋了CSS,它和sizers一樣是一個佈局模型....我簡直不敢相信我記得那個鏈接有一段時間是我讀的它猜測它表明它是很好的營銷。 – Zimm3r