私はTkinterで構築されたシンプルで現在は醜いGUIを使って、ユーザーから2つの変数を取得しています。つまり、ファイルパスとドロップダウンからの選択肢(OptionMenu)です。Tkinter GUIから変数を返す
選択した変数は後でPythonスクリプトで使用されますが、これは難しいところです。ユーザーの選択肢を変数、キャリア、パスにどのように割り当てるかを簡単に説明します。
のサンプルコードは以下を参照してください:
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()を追加しました.... print option.get()はまだ何も印刷しません:/私はあなたが示唆したもののreturnステートメントを変更しましたが、まだ混乱しています後でこの変数にどのようにアクセスしますか? –
代わりにroot.updateを使用して、root.mainloopの使用を避けることができます。しかし、私はファイルダイアログとOptionMenuを試していません。 –
@ルーク:実際、私は 'option.get()'に間違っていました。これは 'var.get()'でなければなりません。後でこの結果を変数に格納する必要があります(たとえば、コードの末尾に 'carrier = var.get() 'を追加するなど)。私はパスの混乱がどこから来るのかは分かりません。あなたのコードの先頭に 'path = [None]'を追加し、 'Choose_Path'の中に' path [0] = askopenfilename() 'を追加してみてください。次に、コードの最後に、 'path = path [0]'がパスを取得します。 (ここではグローバルを宣言しなくてもいいリストを使用していますが、必ずしも最適ではありません) – acdr