0
有人能幫我一箭雙鵰殺死兩隻鳥嗎?我一直試圖將按鈕置於我的wxPanel中一段時間,似乎無法弄清楚。我嘗試過不同的屬性,例如wx.CENTER
和wx.ALIGN_CENTER
和wx.ALIGN_CENTER_HORIZONTAL
,但似乎無法讓按鈕移動到面板的中心。我試圖集中的按鈕在add_unit_pane
方法中爲set_button
。wxPython集中一個按鈕和應用程序崩潰關閉
此外,當我點擊X按鈕關閉程序時,程序崩潰。我沒有正確處理關閉事件嗎?
有人能指出我錯在哪裏嗎?
import wx
class Example(wx.Frame):
def __init__(self, *args, **kw):
super(Example, self).__init__(*args, **kw)
self.init_ui()
def init_ui(self):
self.Bind(wx.EVT_CLOSE, self.on_close_window)
panel = wx.Panel(self)
panel_sizer = wx.BoxSizer(wx.VERTICAL)
panel_sizer.Add(self.add_unit_pane(panel, panel_sizer), 0, wx.EXPAND, border=5)
panel.SetSizerAndFit(panel_sizer)
self.Show()
def on_close_window(self, event):
self.Destroy()
def add_unit_pane(self, panel, panel_sizer):
""" Creates the Unit Measurement panel """
unit_panel = wx.StaticBox(panel, -1, 'Unit of Measurement')
unit_panel_sizer = wx.StaticBoxSizer(unit_panel, wx.VERTICAL)
# Create horizontal row of widgets 1
hbox1 = wx.BoxSizer(wx.HORIZONTAL)
st1 = wx.StaticText(panel, label='UNIT:')
unit_choices = ['in (INCHES)',
'cm (CENTIMETERS)',
'mm (MILLIMETERS)'
]
unit_cb = wx.ComboBox(panel, -1, '100%',
choices=unit_choices,
style=wx.CB_DROPDOWN|wx.CB_READONLY)
unit_cb.SetValue('mm (MILLIMETERS)')
hbox1.Add(st1)
hbox1.AddSpacer(5)
hbox1.Add(unit_cb)
# Create horizontal row of widgets 2
hbox2 = wx.BoxSizer(wx.HORIZONTAL)
st2 = wx.StaticText(panel, label='Pixels per selected unit:')
tc1 = wx.TextCtrl(panel)
hbox2.Add(st2)
hbox2.AddSpacer(5)
hbox2.Add(tc1)
# Create horizontal row of widgets 3
hbox3 = wx.BoxSizer(wx.HORIZONTAL)
set_button = wx.Button(panel, -1, 'Set')
hbox3.Add(set_button, 0, wx.CENTER)
# Add all other sizers to the main unit_panel_sizer
unit_panel_sizer.Add(hbox1)
unit_panel_sizer.AddSpacer(5)
unit_panel_sizer.Add(hbox2)
unit_panel_sizer.AddSpacer(5)
unit_panel_sizer.Add(hbox3)
# Fit all widgets to the sizer
unit_panel.SetSizerAndFit(unit_panel_sizer)
# Return the unit_panel_sizer
return unit_panel_sizer
if __name__ == '__main__':
ex = wx.App()
Example(None, -1, "Centering Button", size=(250,150))
ex.MainLoop()
謝謝 亞當
見我編輯修復你的崩潰 – 2012-08-02 17:42:49
完美,謝謝!任何想法爲什麼做'unit_panel.SetSizerAndFit(unit_panel_sizer)'只在關閉時崩潰它? – adchilds 2012-08-02 17:44:09
不知道它應該會崩潰,當你這樣做可能是因爲StaticBoxSizers分配他們的主人或任何時候你instansiate他們 – 2012-08-02 17:48:01