2017-08-15 21 views
0

私はドロップダウンメニューを持っているコードを持っています。私がする必要があるのは、ドロップダウンリスト(例:電子メールを送信)からエントリを選択してgoを押すと、これは、別のtkウィンドウ(子ウィンドウ)を設定するためのものです。python子Tkウィンドウ

私は間違ったことをしていますが、これを克服する方法を理解できないことを知っています。私はしばらく検索していますが、これを完了する方法や指針を見つけることができません。

ありがとうございました!

from tkinter import * 
root = Tk() 
root.geometry("400x100") 
#======================================== 
#Entry area to enter the number 

labelmain = Label(root,text="Please enter number:") 
labelmain.pack() 
entryvar = StringVar(root) 
entrymain = Entry(root, textvariable=entryvar,width=30) 
entrymain.pack() 
#======================================== 
#Create option drop down list: 
lst = ["Save details to DB", "Send an email", "Copy format", "email",  "View report"] 
ddl = StringVar(root) 
ddl.set(lst[0]) 
option = OptionMenu(root, ddl, *lst) 
option.pack() 
#======================================== 
#Function to get the values from drop down list 
def ok(): 
    print("value is: " + ddl.get()) 
    #root.quit() 
#========================================= 
#Button to process the selection: 

btnmain = Button(root,text="Go", command=ok) 
btnmain.pack() 
#========================================= 

if ddl.get() == "Send an email": 
    samepmrdb = Tk() 
    samepmrdb.mainloop() 

root.mainloop() 
+1

より具体的にする必要があります。あなたが望むものとは違うこのコードは何ですか? –

+0

謝罪ブライアン、これは私の要求のために、より具体的な将来的には、あなたの入力をお願いしますstackoverflowの私の最初の質問だったので、 – Ayman

答えて

1

ウィンドウを開いた直後にddlの値をチェックしています。あなたがあなたの質問で言ったように、ボタンを押した後にいくつかのことが起こるようにしたいので、それらのコードをボタンのコマンドの下に置く必要があります。

また、tkinterアプリにはTk()インスタンスとmainloopという1つのインスタンスのみが必要です。別のウィンドウを開く場合は、Toplevel()を使用してください。

def ok(): 
    print("value is: " + ddl.get()) 
    if ddl.get() == "Send an email": 
     samepmrdb = Toplevel() 
     #now you can populate samepmrdb as you like 
+0

これについてあなたの助けをありがとうございます、これはまさに私がやりたかったものです! – Ayman

0

あなたがする探している、すべてが、これは以下のコード使用して容易に達成することができる最初のtkinterウィンドウ上OptionMenuから選択して第二tkinterウィンドウを更新する方法を見つけるの場合:

from tkinter import * 

class App: 
    def __init__(self, master): 
     self.master = master 
     self.top = Toplevel(master) 
     self.master.withdraw() 
     self.var = StringVar() 
     self.var.set("Example1") 
     self.option = OptionMenu(self.top, self.var, "Example1", "Example2", "Example3", "Example4") 
     self.button = Button(self.top, text="Ok", command=lambda:self.command(self.var)) 
     self.label = Label(self.master) 
     self.option.pack() 
     self.button.pack() 
     self.label.pack() 
    def command(self, var): 
     self.master.deiconify() 
     self.label.configure(text=var.get()) 
     self.label.pack() 

root = Tk() 
app = App(root) 
root.mainloop() 

これはOptionMenuButtonウィジェットを含むToplevelウィジェットを作成します。 Buttonウィジェットは、押されたときにOptionMenuウィジェットから選択を出力します。

この種のロジックはあらゆる種類のものに使用でき、質問が求めている限り、あるウィンドウから別のウィンドウに情報を渡すのは比較的簡単です。

+0

あなたはこれで正しいです、これはまさに私が必要とするものなので、私はこの貴重なコードを見直して研究します:)あなたの助けをありがとう! – Ayman

+0

これであなたの質問に答えることができれば、他のユーザーもこれから学ぶことができるように、それを受け入れられた回答としてマークできますか? –

関連する問題