wxPython 控件不可点击
//if I use BoxSizer instead of StaticBoxSizer, the button is clickable.
//if there is a radio button under StaticBoxSizer, it is clickable,
//but the button is not
row1 = wx.StaticBoxSizer(wx.StaticBox(panel, -1, 'this is row one'), orient=wx.HORIZONTAL)
row1.Add(label1,0,wx.TOP | wx.RIGHT,7)
row1.Add(self.fileCtrl)
row2 = wx.BoxSizer(wx.HORIZONTAL)
//for everything in row2, neither buttons nor radio buttons are clickable
actionBox = wx.StaticBoxSizer(wx.StaticBox(panel, -1, 'asdfasdf'), orient=wx.VERTICAL)
actionRow1 = wx.BoxSizer(wx.HORIZONTAL)
actionRow1.Add(wx.StaticText(panel, -1, 'blah blah ', (5, 5)))
actionRow1.Add(self.mailRadio)
actionRow2 = wx.BoxSizer(wx.HORIZONTAL)
actionRow2.Add(wx.StaticText(panel, -1, 'lah dee dah', (5, 5)))
actionRow2.Add(self.uploadRadio,5)
actionBox.Add(actionRow1,0,wx.EXPAND)
actionBox.Add(actionRow2)
row2.Add(actionBox)
wrapper = wx.FlexGridSizer(2,1,5,5)
wrapper.AddGrowableCol(0)
wrapper.Add(row1,0,wx.TOP | wx.LEFT | wx.RIGHT | wx.ALIGN_CENTER,15)
wrapper.Add(row2,0,wx.ALL | wx.ALIGN_CENTER,15)
panel.SetSizerAndFit(wrapper)
self.Centre()
self.Fit()
我正在 OS X 中测试它,但我也需要它在 Windows 上工作。这对我来说很新,所以这让我很困惑。我必须设置类似 css z-index 的东西吗?
//if I use BoxSizer instead of StaticBoxSizer, the button is clickable.
//if there is a radio button under StaticBoxSizer, it is clickable,
//but the button is not
row1 = wx.StaticBoxSizer(wx.StaticBox(panel, -1, 'this is row one'), orient=wx.HORIZONTAL)
row1.Add(label1,0,wx.TOP | wx.RIGHT,7)
row1.Add(self.fileCtrl)
row2 = wx.BoxSizer(wx.HORIZONTAL)
//for everything in row2, neither buttons nor radio buttons are clickable
actionBox = wx.StaticBoxSizer(wx.StaticBox(panel, -1, 'asdfasdf'), orient=wx.VERTICAL)
actionRow1 = wx.BoxSizer(wx.HORIZONTAL)
actionRow1.Add(wx.StaticText(panel, -1, 'blah blah ', (5, 5)))
actionRow1.Add(self.mailRadio)
actionRow2 = wx.BoxSizer(wx.HORIZONTAL)
actionRow2.Add(wx.StaticText(panel, -1, 'lah dee dah', (5, 5)))
actionRow2.Add(self.uploadRadio,5)
actionBox.Add(actionRow1,0,wx.EXPAND)
actionBox.Add(actionRow2)
row2.Add(actionBox)
wrapper = wx.FlexGridSizer(2,1,5,5)
wrapper.AddGrowableCol(0)
wrapper.Add(row1,0,wx.TOP | wx.LEFT | wx.RIGHT | wx.ALIGN_CENTER,15)
wrapper.Add(row2,0,wx.ALL | wx.ALIGN_CENTER,15)
panel.SetSizerAndFit(wrapper)
self.Centre()
self.Fit()
I'm testing this in OS X, but I need it to work on windows too. Pretty new to this so this is confusing me. Is there something like css z-index that I have to set?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这应该有效:
您的小部件似乎以错误的方式设置了父级。更改为以下内容时,我得到了“不可点击”的行为:
This should work:
It seems that your widgets are parented in a wrong way. I got the "not-clickable" behavior when changing to this:
我遇到了同样的问题,我刚刚找到了解决方案。在 MacOS X 中,小部件的创建顺序非常重要。
StaticBoxSizer 必须在所有包含的小部件之前创建。否则这些元素可能无法单击。
不可点击按钮示例:
可点击按钮示例:
I had the same problem and I've just found the solution. It comes that in MacOS X the order of creation of the widgets is very important.
The StaticBoxSizer must be created before all the contained widgets. Otherwise those elements would probably be not-clickable.
Not-clickable button example:
Clickable button example: