2015-04-19 46 views
-1

我已經被分配在大學爲我的python類做一個項目,我們應該爲一家商店做一個程序,但是我一直在用tkinter的一些問題。我做了一個主菜單,從那裏用戶可以註冊爲買家,也可以購買。我完成了註冊窗口,但我需要該按鈕不僅運行我已經創建的另一個函數,該函數將用戶輸入的數據保存在列表中,還要銷燬該窗口。有沒有辦法讓按鈕運行2個命令? 這裏是什麼,我有一個例子:Tkinter破壞和文件讀取

def get_data(l): 
    l.append(box1.get()) 
    l.append(box2.get()) 
    l.append(box3.get()) 
    l.append(box4.get()) 
def register(): 
    global box1 
    global box2 
    global box3 
    global box4 
    #code defining window and each label and each input box 
    botonA= Button(registerwindow, text = "accept",command=lambda: get_data(mylist), width=5) 
    botonA.grid(row=0,column=2) 

我如何分配按鈕不只是運行GET_DATA功能,而且還關閉窗口?

我的第二個問題是如何在tkinter中打開或導入文件,我搜索了我所得到的全部內容是如何讓用戶打開一個文件,在我們的程序中,我們已經編輯了所需信息的文件,我們只需要獲取和使用這些文件中的數據(商店中的商品,商品的數量,價格等),是否有導入文件的方式,用戶不必選擇它?

謝謝。 (對不起,如果我沒有發佈任何代碼,我的大多數變量和東西都是西班牙文,所以我儘量避免翻譯,但如果你們需要樣品,我會很樂意提供)

+0

你的問題太廣泛了。你需要提出一個具體的問題,並展示你已經做了什麼努力來解決這個問題。 –

+0

好吧,我會嘗試翻譯一些示例代碼以供參考 – Twhite1195

回答

0

只是傳遞到窗口的引用您想destroy()作爲參數傳遞給函數:

def mywindow(): 
    topwindow = Toplevel() 
    button = Button(topwindow, text='ok', command=lambda: okbutton(topwindow, mylist)) 

def okbutton(widget, l): 
    l.append('hello world') 
    widget.destroy() 

至於打開一個文件,而不要求用戶選擇它,你可以簡單的硬編碼在那裏的價值而不是使用類似input()

# filename = input('filename? ') 
filename = 'input_data.txt' 
with open(filename, 'r') as f: 
    pass # process file 
+0

噢,謝謝,我會嘗試 – Twhite1195