wxpython 按钮 禁用_如何禁用wxPython向导页的“下一步”按钮?

这是个鬼鬼祟祟的。我相信有不止一种方法可以做到这一点,但我提出的方法使用wx定时器检查文本控件是否有值。如果是,则重新启用按钮。顺便说一句,我之前给出的用于禁用按钮的answer确实有效(您链接了它)。乔兰是对的。。。在

总之,下面是我的实现:import wx

import wx.wizard

class WizardPage(wx.wizard.PyWizardPage):

def __init__(self, parent, title):

wx.wizard.PyWizardPage.__init__(self, parent)

self.next = None

self.prev = None

self.initializeUI(title)

def initializeUI(self, title):

# create grid layout manager

self.sizer = wx.GridBagSizer()

self.SetSizerAndFit(self.sizer)

def addWidget(self, widget, pos, span):

self.sizer.Add(widget, pos, span, wx.EXPAND)

# getters and setters

def SetPrev(self, prev):

self.prev = prev

def SetNext(self, next):

self.next = next

def GetPrev(self):

return self.prev

def GetNext(self):

return self.next

########################################################################

class MyWizard(wx.wizard.Wizard):

""""""

#

def __init__(self):

"""Constructor"""

wx.wizard.Wizard.__init__(self, None, -1, "Some Title")

self.SetPageSize((500, 350))

mypage1 = self.create_page1()

forward_btn = self.FindWindowById(wx.ID_FORWARD)

forward_btn.Disable()

self.timer = wx.Timer(self)

self.Bind(wx.EVT_TIMER, self.onUpdate, self.timer)

self.timer.Start(1)

self.RunWizard(mypage1)

#

def create_page1(self):

page1 = WizardPage(self, "Page 1")

d = wx.StaticText(page1, label="test")

page1.addWidget(d, (2, 1), (1,5))

self.text1 = wx.TextCtrl(page1)

page1.addWidget(self.text1, (3,1), (1,5))

self.text2 = wx.TextCtrl(page1)

page1.addWidget(self.text2, (4,1), (1,5))

page2 = WizardPage(self, "Page 2")

page3 = WizardPage(self, "Page 3")

# Set links

page2.SetPrev(page1)

page1.SetNext(page2)

page3.SetPrev(page2)

page2.SetNext(page3)

return page1

#

def onUpdate(self, event):

"""

Enables the Next button if both text controls have values

"""

value_one = self.text1.GetValue()

value_two = self.text2.GetValue()

if value_one and value_two:

forward_btn = self.FindWindowById(wx.ID_FORWARD)

forward_btn.Enable()

self.timer.Stop()

#

def main():

""""""

wizard = MyWizard()

#

if __name__ == "__main__":

app = wx.App(False)

main()

app.MainLoop()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值