0

以下のコードを使用して、コンボ ボックスにデータを入力しています。ただし、アプリケーションを実行すると、指定されたパスにあるすべてのメディア ファイルが検出されます。アプリの実行中に別のファイルを追加して、コンボ ボックスのドロップダウン ボタンをクリックしようとすると、アイテムのリストが表示されます。最近追加されたアイテムでコンボボックスが更新されない場合、そこに問題があります:

...
...
...
#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()) を 1 つ見つけました。ドロップダウン矢印をクリックすると、ディレクトリ内の項目でコンボボックス リストが更新されます。ただし、使い方の説明はありません。誰かが私を正しい方向に導くことができますか. ありがとう!

4

2 に答える 2

1

必要なイベントをキャッチする方法は本当にありません。おそらく、カスタム コントロールを作成するか、代わりに ComboCtrl を使用する必要があります。

いくつかのアイデアについては、次のスレッドを参照してください。

于 2013-09-25T17:36:02.860 に答える