我一直想知道是否有可能动态填充wx.Choice小部件(点击它并在显示选项之前)。
我有以下用例: 我有一个表单,用户需要从wx.Choice中选择一个选项,该选项填充了数据库中的数据。他发现他需要的选项不在那里(因此在数据库中也没有)。接下来,他最小化窗口,转到另一个窗口,从中向数据库添加新数据,返回并希望在选择窗口小部件中选择新键入的数据。
一个简单的解决方案是关闭窗口并再次打开它,但这不方便。是否可以为选择小部件点击事件?
答案 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小部件时,我都会避免刷新列表;这会产生不必要的查询相反,我在点击例如点击之后重新填写选项。选择窗口小部件旁边的刷新按钮,或 - 如果您可以在关闭数据修改对话框后打开选择修改框架作为对话框。