我正在使用下面的代码来填充组合框。但是,当我运行我的应用程序时,它会检测指定路径中的所有媒体文件......如果我在应用程序运行时碰巧添加了另一个文件并尝试单击组合框的下拉按钮,项目列表在组合框中没有用最近添加的项目更新,这就是问题所在:
...
...
...
#Select Media path
os.chdir("c:\\ffmpeg\\bin")
wrkdir = os.getcwd()
filelist = os.listdir(wrkdir)
self.formats1 = []
for filename in filelist:
(head, filename) = os.path.split(filename)
if filename.endswith(".avi") or filename.endswith(".mp4") or filename.endswith(".flv") or filename.endswith(".mov") or filename.endswith(".mpeg4") or filename.endswith(".mpeg") or filename.endswith(".mpg2") or filename.endswith(".mkv") or filename.endswith(".m4v") or filename.endswith(".wav") or filename.endswith(".mp3"):
self.formats1.append(filename)
self.format_combo1=wx.ComboBox(panel, size=(140, -1),value='Select Media', choices=self.formats1, style=wx.CB_DROPDOWN, pos=(300,50))
...
...
....
经过一番阅读,我发现 wx.ComboBox 是 wxControlWithItems、wx.combo.ComboCtrl 和 wx.Choice 的子类,所以它也可以使用它们的方法。我找到了一种方法(OnButtonClick()),听起来它会做我需要做的事情 - 一旦单击下拉箭头,使用目录中的项目更新组合框列表。但是,没有关于如何使用它的描述。有人可以引导我朝着正确的方向前进。谢谢!