对我的问题很抱歉。由于缩进错误,我很难发布源代码。
1。我的环境
Python 3.6.3 | Anaconda,Inc. | (默认值,2017年10月6日,12:04:38) [GCC 4.2.1兼容的Clang 4.0.1(标签/ RELEASE_401 / final)] 在达尔文上
2。问题
如何使用wxPython从主函数中获取选择的选择框的标签?我使用wxPython编写了一个程序,如下所示。我一遍又一遍地尝试了一下,但是没有成功。请提供您的建议。
在main()函数中,如下所示,
print("Main:", sf.getFruitsValue())
显示NULL
。我想要选择的选择框的标签。在类的函数OnClick()
中
print("OnClick:", self.favorite_fruits)
可以显示正确选择的标签。
3.Source(失败)
import os
import wx
class SelectFruits(wx.Frame):
panel=''
layout=''
checkBox=[]
favorite_fruits=[]
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, title, size=(750, 500))
self.panel = wx.Panel(self, wx.ID_ANY)
self.Centre()
self.Show(True)
def setLayout(self,fruits):
self.layout = wx.BoxSizer(wx.VERTICAL)
self.showMsg1=wx.StaticText(self.panel, wx.ID_ANY, 'Choose the favorite fruits.')
self.layout.Add(self.showMsg1, proportion=1)
for index, target in enumerate(fruits):
(self.checkBox).append(wx.CheckBox(self.panel, wx.ID_ANY, target))
self.layout.Add(self.checkBox[index], flag=wx.GROW)
self.commit_button = wx.Button(self.panel, wx.ID_ANY, "Commit")
self.layout.Add(self.commit_button, proportion=1)
self.SetSizerAndFit(self.layout)
self.Refresh()
self.commit_button.Bind(wx.EVT_BUTTON,self.OnClick)
def OnClick(self,event):
eventObj = event.GetEventObject()
self.favorite_fruits = []
for target in self.checkBox:
if target.IsChecked():
self.favorite_fruits.append(target.GetLabel())
print("OnClick:",self.favorite_fruits)
def getFruitsValue(self):
return self.favorite_fruits
def main():
fruits=["Apple","Banana","Grape","Kiwi","Mango","Orange","Pineapple","Strawberry"]
app = wx.App(False)
sf = SelectFruits(None, wx.ID_ANY, "FruitSelect")
sf.setLayout(fruits)
print("Main:",sf.getFruitsValue())
app.MainLoop()
if __name__ == "__main__":
main()