我正在尋找使用Tkinter構建的簡單的,目前很醜的GUI來從用戶獲得兩個變量。即一個文件路徑和一個下拉選項(OptionMenu)。從Tkinter GUI返回變量
所選變量將在稍後用於Python腳本中,這是我遇到困難的地方。簡而言之,如何將用戶選擇分配給變量:Carrier,Path。
請參閱下面的示例代碼:
from Tkinter import *
from tkFileDialog import askopenfilename
def Choose_Path():
Tk().withdraw()
return askopenfilename()
root = Tk()
root.geometry('400x400')
root.configure(background='#A2B5CD')
C_Label = Label(root, text='Carrier Choice:', bg='#A2B5CD', fg='black',font=('Calibri', 12))
C_Label.grid(row=0,sticky=W, padx =10)
I_Label = Label(root, text='Invoice Path:', bg='#A2B5CD', fg='black',font=('Calibri', 12))
I_Label.grid(row=1, sticky=W, padx =10)
var = StringVar(root)
var.set('Choose Carrier...')
option = OptionMenu(root, var, 'DHL','DPD','DX','Fedex','Geodis','Hermes','WN Direct')
option.config(relief=RAISED, highlightbackground='#A2B5CD')
option.grid(row=0,column=1, sticky=W, pady = 10)
browser = Button(root, text = 'Browse Invoice...', command=Choose_Path)
browser.grid(row=1, column=1, sticky=W, pady=10)
Button(root, text='Accept and Close').grid(column=1, sticky=S)
root.mainloop()
任何反饋,將不勝感激。提前致謝。
謝謝你的快速反應!所以我需要添加一個root.exit()來繼續我的腳本的下一行?我已經將root.exit()添加到accept和close按鈕的命令....打印option.get()仍然不打印任何內容:/我也已將return語句更改爲您的建議,但仍然困惑我以後如何訪問這個變量? –
您可以在需要的地方使用root.update來避免使用root.mainloop。但是,我沒有嘗試過使用文件對話框和OptionMenu。 –
@Luke:其實我錯了'option.get()' - 這應該是'var.get()'。您需要稍後將結果存儲在某個變量中(例如,將'carrier = var.get()'添加到代碼的末尾)。雖然我不確定路徑的混亂是從哪裏來的。嘗試在代碼的開頭添加'path = [None]',然後在'Choose_Path'裏面加入'path [0] = askopenfilename()'。然後,在你的代碼結束時,'path = path [0]'會爲你提供路徑。 (我使用一個列表來避免必須在這裏聲明全局變量,不一定是最優的。) – acdr