wxPython:与ComboC一起使用时,列表框不可选择/不可单击

2024-10-01 04:57:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将wx.ListBox与{}结合。下面是一个示例代码。由于某些原因,列表框中的项目无法单击/选择。我想知道我怎样才能使它工作。谢谢!在

编辑:添加了缺少的代码

import wx, wx.combo

class MainFrame(wx.Frame):
    def __init__(self, parent):
        wx.Frame.__init__(self, parent, title="", size=(300, 100))
        gbs = wx.GridBagSizer()
        ComboCtrlBox = wx.combo.ComboCtrl(self)
        ComboCtrlPopup = ListBoxComboPopup()
        ComboCtrlBox.SetPopupControl(ComboCtrlPopup)
        ComboCtrlPopup.ListBox.Append("Apple")
        ComboCtrlPopup.ListBox.Append("Banana")
        ComboCtrlPopup.ListBox.Append("Orange")

        ComboCtrlPopup.ListBox.Bind(wx.EVT_LISTBOX, self.OnSelect) #ADDED

        gbs.Add(ComboCtrlBox, pos = (0, 0), span = (1, 1), flag = wx.EXPAND|wx.ALL, border = 10)
        gbs.AddGrowableCol(0)
        self.SetSizer(gbs)
        self.Layout()

    def OnSelect(self, evt):    #ADDED
        print "HAHA"


class ListBoxComboPopup(wx.combo.ComboPopup):
    def Init(self):
        self.ItemList = []

    def Create(self, parent):
        self.ListBox = wx.ListBox(parent, -1, size = (-1, 20), choices = self.ItemList)

    def GetControl(self):
        return self.ListBox

    def OnPopup(self):
        pass

#-----------------------------------------------------------------------------#

if __name__ == '__main__':
    APP = wx.App(False)
    FRAME = MainFrame(None)
    FRAME.Show()
    APP.MainLoop()

Tags: 代码selfinitdefframeclassparentwx
1条回答
网友
1楼 · 发布于 2024-10-01 04:57:01

您的ListBoxComboPopup类中缺少一些使其与ComboCtrl良好工作所需的东西。至少您缺少一些事件绑定和处理程序来从ListBox捕获选择事件,以及GetStringValue方法的实现,组合将调用该方法以获取要显示的值。请参阅wxPython演示中的ComboCtrl示例以了解更多详细信息和示例代码。在

相关问题 更多 >