在选择期间填写wx.Choice

时间:2014-05-15 11:12:27

标签: wxpython wxwidgets

我一直想知道是否有可能动态填充wx.Choice小部件(点击它并在显示选项之前)。

我有以下用例: 我有一个表单,用户需要从wx.Choice中选择一个选项,该选项填充了数据库中的数据。他发现他需要的选项不在那里(因此在数据库中也没有)。接下来,他最小化窗口,转到另一个窗口,从中向数据库添加新数据,返回并希望在选择窗口小部件中选择新键入的数据。

一个简单的解决方案是关闭窗口并再次打开它,但这不方便。是否可以为选择小部件点击事件?

1 个答案:

答案 0 :(得分:0)

没有必要重新初始化整个窗口;您可以在wx.Choice上使用Clear()',Append(string item)AppendItems(list items)

让我们创建wx.Choice控件并稍后修改它的项目:

import wx

class myFrame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None, -1, 'Code Example', size=(300, 200))
        panel = wx.Panel(self, -1)
        sampleList = ['A', 'B', 'C', 'D']
        wx.StaticText(panel, -1, "Select option:", (15, 20))
        self.myChoice=wx.Choice(panel, -1, (85, 18), choices=sampleList)
        self.myChoice.Bind(wx.EVT_SET_FOCUS,self.onFocus)
        # options available in drop down list: A,B,C,D

    def onFocus(self,evt):
        # refresh your items with .Clear, .Append(), etc
        # I'm just adding new item every time user clicks on control              
        self.myChoice.Append('''I'm new here''')

app = wx.PySimpleApp()
myFrame().Show()
app.MainLoop()

就个人而言,每次用户点击Choice小部件时,我都会避免刷新列表;这会产生不必要的查询相反,我在点击例如点击之后重新填写选项。选择窗口小部件旁边的刷新按钮,或 - 如果您可以在关闭数据修改对话框后打开选择修改框架作为对话框。