2017-02-05 12 views
0

チェックボックスの状態を再評価できないようです。シンプルexplinationで、私は次のようtkinterのチェックボタンの状態を再評価する方法

import tkinter 
from tkinter imprt ttk 
root = Tk() 
ck = ttk.Checkbutton(root, text='Checkbox') 
ck.state(['!alternate']) 
ck.state(['selected']) 

if ck.instate(['selected']): 
    # do something 
elif ck.instate(['!selected']): 
    # do something else 

root.mainloop() 

を行うことができますこれは、「選択」状態にチェックボタンを設定し、それが選択されているため、その後if文を実行します。しかし、チェックボックスの選択を解除すると、チェックボックスの状態が再評価されず、elif文が実行されます。私はroot.update()root.update_idletasksのようなものを見ましたが、これは私が探しているものではないことは確かです。

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

側の注意点として、私は、Python 3.xの上だ

+0

をチェックボタンをクリックしたときに、この 'IF/else'は一度だけ実行されます - スタート時。プログラムの実行中に何かを実行する必要があるならば、 'Checkbutton'に/ bind関数を代入してください。 – furas

答えて

0

あなたif/elseは一度だけ実行されます - スタート時。あなたがプログラムを実行している間に何かを実行する必要がある場合は、Checkbutton

ttk.Checkbutton(..., command=function_name) 

に機能を割り当てて、それが実行されます、あなたが

import tkinter as tk 
from tkinter import ttk 

# --- functions --- 

def clicked(): 
    if ck.instate(['selected']): 
     print('selected') 
    elif ck.instate(['!selected']): 
     print('not selected') 

# --- main --- 

root = tk.Tk() 

ck = ttk.Checkbutton(root, text='Checkbox', command=clicked) 
ck.pack() 

root.mainloop() 
+0

これはあまり意味があります。ありがとう! – Goalieman

+0

BTW:おそらく 'Button'と' Checkbutton'だけが 'command ='を持っています - 他のウィジェットは 'widget.bind(event_type、function_name)'を必要とします。 'root.bind( ''、on_keypress)' – furas

関連する問題