所以我有一个 wxpython 应用程序,当用户将另一个复选框更改为 false 时,我想在其中禁用复选框小部件。我目前使用以下代码将这两个复选框设置为 true。
self.parentCheckbox.SetValue(True)
self.childCheckbox.SetValue(True)
现在我想禁用 childCheckbox,因为如果用户将 parentCheckbox 设为 false,它就不再相关了。我希望下面的代码可以做到这一点,但它似乎没有做任何事情。
if self.parentCheckbox.GetValue() == False:
self.childCheckbox.Disabled()
它是粗糙和准备好的,但它展示了如何在没有pubsub
.
import wx
class MyFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1, "My Frame", size=(3000, 3000))
self.panel = wx.Panel(self,-1)
self.a = wx.CheckBox(self.panel, -1, "Apples", (20,100), (160,-1))
self.b = wx.CheckBox(self.panel, -1, "Mango", (20,150), (160,-1))
self.c = wx.CheckBox(self.panel, -1, "Banana", (20,200), (160,-1))
self.d = wx.CheckBox(self.panel, -1, "Orange", (20,250), (160,-1))
button=wx.Button(self.panel,label="Child",pos=(800, 400), size = (50,50))
self.Bind(wx.EVT_BUTTON, self.newwindow, button)
self.a.SetValue(True)
def newwindow(self, event):
secondWindow = window2(parent=self)
secondWindow.Show()
class window2(wx.Frame):
def __init__(self,parent):
wx.Frame.__init__(self,parent, -1,'Window2', size=(1000,700))
self.parent = parent
self.panel=wx.Panel(self, -1)
self.chk = wx.CheckBox(self.panel, -1, "Apples", (20,100), (160,-1))
self.Bind(wx.EVT_CHECKBOX, self.Check)
self.SetBackgroundColour(wx.Colour(100,100,100))
self.Centre()
self.Show()
def Check(self,event):
if self.chk.IsChecked() == True:
self.parent.a.SetValue(False)
self.parent.a.Disable()
else:
self.parent.a.SetValue(True)
self.parent.a.Enable()
self.parent.Update()
app = wx.App()
frame = MyFrame()
frame.Show(True)
app.MainLoop()
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句