2017-03-08 3 views
-1

"rond"という関数をアクティブにするはずのチェックボタンを作ろうとしましたが、うまくいきません...どうしましたか?tkinter:checkbuttonが機能していない

from tkinter import* 

def rond(): 
if okok.get()==1: 
    print("ok") 


okok = BooleanVar() 
okok.set(0) 
root = Tk() 
can = Canvas(root, width=200, height=150, bg="light yellow") 
can.bind("<ButtonPress-1>", variable=okok, onvalue=1, offvalue=0, command=rond) 
can.pack(side="top") 


root.mainloop() 

それは、これを実行した後は、表示されます:

Traceback (most recent call last): File "/PycharmProjects/untitled/testtest.py", line 7, in <module> okok = BooleanVar() File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/tkinter/__init__. py", line 389, in __init__ Variable.__init__(self, master, value, name) File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/tkinter/__init__.py", line 233, in __init__ self._root = master._root() AttributeError: 'NoneType' object has no attribute '_root'

答えて

0

あなたがチェックボタンをキャンバスを使用していないように見えます。私はこのようなものを試してみるでしょう: cbutton =チェックボタン(ルート、etcなど)

または良いリソースについては、effbot.orgをチェックしてください。

1

三つの問題があります:あなたがBooleanVarroot = Tk()を作成する必要があるため

  1. はあなたが取得している例外があります。
  2. すでに述べたように、Canvasの代わりにCheckbuttonウィジェットを使用する必要があります。 commandは、コンストラクタに直接入ります。 bindは控えめです。また、onvalueoffvalueはデフォルトと同じなので、実際には必要ありません。画像アイコンなし

    can = Checkbutton(root, width=20, height=15, bg="light yellow", 
            variable=okok, onvalue=1, offvalue=0, command=rond) 
    
  3. widthheightは、文字(テキストのすなわち、行と列)になりますので、入力した数字があまりにも高いです。または、画像アイコンを指定します。
関連する問題