7

tkinter に 2 つのエントリ ウィジェット、1 つのオプション メニュー (ドロップダウン リスト)、1 つのボタンがあるとします。3つのウィジェットすべてがユーザーによって埋められるまで、ボタンウィジェットの状態を無効に設定するにはどうすればよいですか?これは私が現在持っているものです:

import Tkinter as tk

root = tk.Tk()

entry1=tk.Entry(root,width=15).grid(row=1,column=1)
entry2=tk.Entry(root,width=15).grid(row=1,column=2)

choices=('a','b','c')
var=tk.StringVar(root)
option=tk.OptionMenu(root,var,*choices)
option.grid(row=1,column=3)

button=tk.Button(root,text="submit")
button.grid(row=1,column=4)

root.mainloop()

- 編集 -

この方法を試しましたが、これが正しい方法だとは思いません。

import Tkinter as tk

root = tk.Tk()
def myfunction(event):
    x=var.get()
    y=entry1.get()
    z=entry2.get()
    print len(x),":",len(y),":",len(z)
    if len(y)>0 and len(x)>0 and len(z)>0:
        button.config(state='normal')
    else:
        button.config(state='disabled')
entry1=tk.Entry(root,width=15)
entry1.grid(row=1,column=1)
entry2=tk.Entry(root,width=15)
entry2.grid(row=1,column=2)

choices=('a','b','c')
var=tk.StringVar(root)
option=tk.OptionMenu(root,var,*choices)
option.grid(row=1,column=3)

button=tk.Button(root,text="submit")
button.grid(row=1,column=4)

root.bind("<Enter>", myfunction)
root.mainloop()
4

3 に答える 3

-1

これを試して:

import Tkinter as tk

root = tk.Tk()
def myfunction(*event):
    x=var.get()
    y=entry1.get()
    z=entry2.get()
    print len(x),":",len(y),":",len(z)
    if len(y)>0 and len(x)>0 and len(z)>0:
        button.config(state='normal')
    else:
        button.config(state='disabled')
entry1=tk.Entry(root,width=15)
entry1.grid(row=1,column=1)
entry2=tk.Entry(root,width=15)
entry2.grid(row=1,column=2)

choices=('a','b','c')
var=tk.StringVar(root)
option=tk.OptionMenu(root,var,*choices)
option.grid(row=1,column=3)

button=tk.Button(root,text="submit")
button.grid(row=1,column=4)
button.config(state='disabled')

root.bind_class("Entry","<FocusOut>",myfunction)
var.trace('w', myfunction)
root.mainloop()
于 2013-05-22T09:24:25.303 に答える