2013-12-21 50 views
0

所以我有一個程序,基本上應該有一個按鈕,在(用戶名)文件夾中打開一個文件對話框。但是當我運行該程序時,它甚至沒有按下按鈕就會打開。更重要的是,該按鈕甚至沒有出現。所以除了這個問題之外,我必須找到一種方法將選定的目錄轉換爲字符串。程序在啓動時運行按鈕命令?

import tkinter 
import tkinter.filedialog 
import getpass 
gui = tkinter.Tk() 
user = getpass.getuser() 
tkinter.Button(gui, command=tkinter.filedialog.askopenfilename(initialdir='C:/Users/%s' % user)).pack() 
gui.mainloop() 

回答

1

關於你的第一個問題,你需要把一個函數調用到tkinter.filedialog.askopenfilename中,以便它在啓動時不運行。我其實剛剛回答了一個關於今天早上的問題,所以你可以看看here作爲答案。

關於您的第二個問題,該按鈕沒有顯示,因爲您從未將它放在窗口上。您可以使用grid方法是:

button = tkinter.Button(gui, command=lambda: tkinter.filedialog.askopenfilename(initialdir='C:/Users/%s' % user)) 
button.grid() 

總而言之,你的代碼應該是這樣的:

import tkinter 
import tkinter.filedialog 
import getpass 
gui = tkinter.Tk() 
user = getpass.getuser() 
button = tkinter.Button(gui, command=lambda: tkinter.filedialog.askopenfilename(initialdir='C:/Users/%s' % user)) 
button.grid() 
gui.mainloop() 
+0

謝謝!那麼現在問題的第二部分:我將如何將目錄轉換爲字符串值? – Phoenix

0

你忘了使用上的按鈕幾何經理:

button = tkinter.Button(window, command=test) 
button.pack() 

如果你不這樣做,該按鈕將無法繪製。你可能會發現這個鏈接很有用:http://effbot.org/tkinterbook/pack.htm。 請注意,要將命令傳遞給處理程序,您必須只寫入函數的名稱(如在其他答案中描述的那樣)。