私は 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