是否有一个独立于平台的方法来禁用wxpython spinEdit控件

时间:2015-03-24 12:27:47

标签: python wxpython

在下面的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()

1 个答案:

答案 0 :(得分:1)

将您的wxPython更新到最新版本,该问题已修复。如果由于某种原因无法更新,那么您已经完成的工作可能是最好的。