0

タイトルが示すように、1 つのリスト ボックスから項目を選択し、ボタンを押して、2 番目のリスト ボックスに追加しようとしています。

ボタンをクリックして移動すると、値がコマンド プロンプトに出力されますが、リスト ボックス自体は更新されません。

コピーして貼り付けたので、すべてを 1 つの場所にタブで移動する必要があることに気付きました。

class Actions: 

def openfile(self): #select a directory to view files
    directory = tkFileDialog.askdirectory(initialdir='.')
    self.directoryContents(directory)


def filename(self):
    Label (text='Please select a directory').pack(side=TOP,padx=10,pady=10)

files = []
fileListSorted = []

#display the contents of the directory
def directoryContents(self, directory): #displays two listBoxes containing items
    scrollbar = Scrollbar() #left scrollbar - display contents in directory
    scrollbar.pack(side = LEFT, fill = Y) 

    scrollbarSorted = Scrollbar() #right scrollbar - display sorted files 
    scrollbarSorted.pack(side = RIGHT, fill = Y, padx = 2, pady=100)

    fileList = Listbox(yscrollcommand = scrollbar.set) #files displayed in the left listBox
    for filename in os.listdir(directory):
        fileList.insert(END, filename)
        global files 
        self.files.append(filename) #insert the values into the files array so we know which element we want to enter in moveFile
    fileList.pack(side =LEFT, fill = BOTH)
    scrollbar.config(command = fileList.yview)


    global fileListSorted #this is for the filelist in the right window. contains the values the user has selected
    fileListSorted = Listbox(yscrollcommand = scrollbarSorted.set) #second listbox (button will send selected files to this window)
    fileListSorted.pack(side=RIGHT, fill = BOTH)
    scrollbarSorted.config(command = fileListSorted.yview)

    selection = fileList.curselection() #select the file
    b = Button(text="->", command=lambda:self.moveFile(fileList.curselection()))#send the file to moveFile to be added to fileListSorted
    b.pack(pady=5, padx =20)


##moveFile addes files to the array fileLIst2, which is the fileList on the right
def moveFile(self,File):
    insertValue = int(File[0]) #convert the item to integer
    global files
    insertName = self.files[insertValue] #get the name of the file to be inserted

    global fileListSorted
    self.fileListSorted.append(str(insertName)) #append the value to the fileList array
    print self.fileListSorted #second listbox list
4

1 に答える 1

1

そのコードをたどるのはかなり難しいです -- たとえば、 はどこでself.fileListSorted定義されていますか? -- グローバル変数とfileListSortedインスタンス変数self.fileListSortedがあり、それらは別のものです。ただし、それらを混乱させているようです (たとえば、なぜ行があるのか

global fileListSorted

inを使用しmoveFileたことがない場合に in を使用fileListSortedしますか?) また、項目を に追加するにはListBox、通常、insertメソッドを使用することに注意してmoveFilesください。

于 2012-10-24T11:46:02.057 に答える