如何使用wxPython从主函数中获取选择的选择框的标签?

时间:2018-08-12 00:50:05

标签: python wxpython

对我的问题很抱歉。由于缩进错误,我很难发布源代码。

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()

0 个答案:

没有答案