0

私は wxpython に比較的慣れていません。基本的に、私は間のループを閉じるのに問題があります

1) 以下の OnDropFiles メソッドで ListOfFiles と呼ばれるリストに入力し、2) FileList を更新して ListOfFiles に項目を表示します。

電話すれば分かる

FileWindow(None, -1, 'List of Files and Actions')

OnDropFiles の最後で、新しいフレームを開始し、FileList listctrl にデータを入力するときに ListOfFiles から描画します... しかし、同じウィンドウで更新する方法があることを望んでいました。Layout() をいじって、FileWindowObject でさまざまなメソッドを呼び出してみましたが、成功しませんでした。

どうもありがとうございました。あなたがくれた答えは、私の wxpython の理解に大きなブレークスルーをもたらすかもしれないと思います。

#!/usr/bin/env python

import wx
import sys
import traceback
import time

APP_EXIT = 1
ListOfFiles = []


class FileDrop(wx.FileDropTarget):  #This is the file drop target
    def __init__(self, window):
        wx.FileDropTarget.__init__(self)  #File Drop targets are subsets of windows
        self.window = window

    def OnDropFiles(self, x, y, filenames):   #FileDropTarget now fills in the ListOfFiles

        for DragAndDropFile in filenames:
            ListOfFiles.append(DragAndDropFile)  #We simply append to the bottom of our list of files.  

class FileWindow(wx.Frame):

    def __init__(self, parent, id, title):  #This will initiate with an id and a title
        wx.Frame.__init__(self, parent, id, title, size=(300, 300))

        hbox = wx.BoxSizer(wx.HORIZONTAL)  #These are layout items
        panel = wx.Panel(self, -1)  #These are layout items

        self.FileList = wx.ListCtrl(panel, -1, style=wx.LC_REPORT)  #This builds the list control box

        DropTarget = FileDrop(self.FileList)  #Establish the listctrl as a drop target
        self.FileList.SetDropTarget(DropTarget)  #Make drop target.

        self.FileList.InsertColumn(0,'Filename',width=140)  #Here we build the columns

        for i in ListOfFiles:  #Fill up listctrl starting with list of working files
            InsertedItem = self.FileList.InsertStringItem(sys.maxint, i)  #Here we insert an item at the bottom of the list

        hbox.Add(self.FileList, 1, wx.EXPAND)
        panel.SetSizer(hbox)
        self.Show(True)

def main():
    ex = wx.App(redirect = True, filename = time.strftime("%Y%m%d%H%M%S.txt"))
    FileWindowObject = FileWindow(None, -1, 'List of Files and Actions')
    ex.MainLoop()

if __name__ == '__main__':
    main()  #Execute function#!/usr/bin/env python
4

1 に答える 1