如何从带有复选框的下拉框中保存选定的输入?我的下拉框没问题,但复选框不起作用

问题描述

嗨,我正在尝试运行基于 wx 的 GUI。我在下拉列表中创建了复选框。但是复选框不起作用。我希望复选框起作用并将选定的输入选项名称保存在某处。这是代码。使用这些选定的输入选项名称一个或多个),我稍后将过滤一个大字符串。提前谢谢你:)

import wx
import wx.stc
from wx.lib.mixins.listctrl import CheckListCtrlMixin,ListCtrlAutoWidthMixin

class CheckListCtrl(wx.ListCtrl,CheckListCtrlMixin,ListCtrlAutoWidthMixin):
    def __init__(self,parent):
        wx.ListCtrl.__init__(self,parent,wx.ID_ANY,style=wx.LC_REPORT | 
                wx.SUNKEN_BORDER)
        CheckListCtrlMixin.__init__(self)
        ListCtrlAutoWidthMixin.__init__(self)
        self.SetSize(-1,-1,50)

    def OnCheckItem(self,index,flag):
        item = self.GetItem(index)
        if flag:
            what = "checked"
        else:
            what = "unchecked"

        print(f'{item.GetText()} - {what}')

class ListViewComboPopup(wx.ComboPopup):

    def __init__(self):
        wx.ComboPopup.__init__(self)
        self.lc = None

    def AddItem(self,txt):
        self.lc.InsertItem(0,txt)


    def Init(self):
        self.value = -1
        self.curitem = -1

    def Create(self,parent):
        self.lc = CheckListCtrl(parent)
        self.lc.InsertColumn(0,'',width=90)
        return True

    def GetControl(self):
        return self.lc

    def OnPopup(self):
        wx.ComboPopup.OnPopup(self)

    def GetAdjustedSize(self,minWidth,prefheight,maxHeight):
        return wx.ComboPopup.GetAdjustedSize(
            self,110,maxHeight)

class MyForm(wx.Frame):

    def __init__(self):
        wx.Frame.__init__(self,None,title="Popup Menu Tutorial")
        panel = wx.Panel(self)
        comboCtrl = wx.ComboCtrl(panel,"Select filter")    
        popupCtrl = ListViewComboPopup()
        comboCtrl.SetPopupControl(popupCtrl)
        popupCtrl.AddItem("mango")
        popupCtrl.AddItem("cat")
        popupCtrl.AddItem("dog")
        popupCtrl.AddItem("tiger")
        popupCtrl.AddItem("three")
        popupCtrl.AddItem("hat")
        popupCtrl.AddItem("hot")
        popupCtrl.AddItem("sweden")
        popupCtrl.AddItem("kth")

解决方法

您可以使用pickle将它们保存为.txt文件中的变量:

pickle.dump(your_variable,open("path/to/your/file.txt","wb"))

并访问它们:

your_variable = pickle.load(open("path/to/your/file.txt","rb"))