0
我目前正在編寫一個使用Tkinter爲用戶提供圖形界面的應用程序。Tkinter複選框「名稱未定義」
該應用程序運行良好,最近我決定添加一些複選框,這個想法是當用戶選中其中一個框時,另一組文本通過API發送。
我有我能夠得到很好地工作,但由於某種原因,每當我嘗試和檢索複選框的值輸入框,我得到以下錯誤:
if check.get():
NameError: name 'check' is not defined
對於生活我無法弄清楚爲什麼會出現這個錯誤,這裏是我的代碼的其餘部分,爲了使它更清晰,我刪除了輸入框的工作代碼。
from tkinter import *
class GUI:
def __init__(self, master):
check = IntVar()
self.e = Checkbutton(root, text="check me", variable=check)
self.e.grid(row=4, column=2)
self.macro_button = Button(master, text="Test Button", command=self.test)
self.macro_button.grid(row=11, column=1)
def test(self):
if check.get():
print('its on')
else:
print('its off')
root = Tk()
root.resizable(width=False, height=False)
my_gui = GUI(root)
root.mainloop()
當運行該代碼,然後按標有「測試按鈕」按鈕,即當誤差出現在我的終端。
任何人都有任何想法爲什麼這發生在我的複選框,而不是我的inputboxes?
編輯:
什麼是對我來說更奇怪的是,這個代碼,我發現在網上進行教你如何使用Tkinter的複選框的工作就像一個魅力,它幾乎等同於雷:
import tkinter as tk
root = tk.Tk()
var = tk.IntVar()
cb = tk.Checkbutton(root, text="the lights are on", variable=var)
cb.pack()
def showstate():
if var.get():
print ("the lights are on")
else:
print ("the lights are off")
button = tk.Button(root, text="show state", command=showstate)
button.pack()
root.mainloop()
非常感謝你的迴應,它完美的作品,很明顯,我是新來的這一切哈哈!當我不必爲輸入框中輸入的文本變量執行相同操作時,爲什麼必須將其設置爲實例變量? @ Luke.py – Ruthus99
什麼是輸入框?你的意思是入口小部件?我可以看到你的代碼中的任何一個! :S已經解決了你的問題? –
是的我的意思是入口小部件,我知道我把它們留在了外面,但我只是問一個普通的python問題。是的,我的問題已經解決了,謝謝@ luke.py – Ruthus99