在下面的GUI代码中,我有两个spinEdit控件和按钮来启用/禁用控件。在Windows上我可以使用控件的启用/禁用方法禁用spinEdit但在Mac上我需要启用/禁用控件的子组件。我想知道是否有人想知道是否有单一的跨平台方法来启用/禁用spinEdit控件而不诉诸查询操作系统类型?
在Windows上使用Python 2.7,wxpython 2.8.12.1-1 在Python上使用Python 2.7,wxpython 2.9.2.4-1
import wx
class CtrlPanel(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
# make edit controls
self.spinEditWin = wx.SpinCtrl( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.SP_ARROW_KEYS|wx.TE_PROCESS_ENTER, 0, 10, 0 )
self.spinEditMac = wx.SpinCtrl( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.SP_ARROW_KEYS|wx.TE_PROCESS_ENTER, 0, 10, 0 )
self.buttonEn = wx.Button(self, wx.ID_ANY, label='enable')
self.buttonDi = wx.Button(self, wx.ID_ANY, label='disable')
self.sizer = wx.BoxSizer(wx.VERTICAL)
self.sizer.Add(self.spinEditWin, 0, wx.EXPAND)
self.sizer.Add(self.spinEditMac, 0, wx.EXPAND)
self.sizer.Add(self.buttonEn, 0, wx.EXPAND)
self.sizer.Add(self.buttonDi, 0, wx.EXPAND)
self.SetSizer(self.sizer)
self.Fit()
self.buttonEn.Bind(wx.EVT_BUTTON, self.enableControlEvt)
self.buttonDi.Bind(wx.EVT_BUTTON, self.disableControlEvt)
def enableControlEvt( self, evt ):
self.spinEditWin.Enable(True)
for achild in self.spinEditMac.GetChildren():
achild.Enable(True)
evt.Skip()
def disableControlEvt( self, evt ):
self.spinEditWin.Enable(False)
for achild in self.spinEditMac.GetChildren():
achild.Enable(False)
evt.Skip()
if __name__ == "__main__":
app = wx.PySimpleApp()
fr = wx.Frame(None, title='test')
panel = CtrlPanel(fr)
fr.Show()
app.MainLoop()
答案 0 :(得分:1)
将您的wxPython更新到最新版本,该问题已修复。如果由于某种原因无法更新,那么您已经完成的工作可能是最好的。