當我運行這段代碼在Python 3.5:按鈕沒有定義,蟒蛇3
import tkinter
top = tkinter.Tk()
def callback():
print ("click!")
button = Button(top, text="OK", command=callback)
top.mainloop()
我得到一個錯誤:
NameError: name 'Button' is not defined
當我運行這段代碼在Python 3.5:按鈕沒有定義,蟒蛇3
import tkinter
top = tkinter.Tk()
def callback():
print ("click!")
button = Button(top, text="OK", command=callback)
top.mainloop()
我得到一個錯誤:
NameError: name 'Button' is not defined
導入Tkinter的模塊只允許您訪問的模塊對象(tkinter
)。您可以通過編寫任何課程來訪問其中的任何課程。 tkinter.Button
而不是僅僅Button
:
import tkinter
top = tkinter.Tk()
def callback():
print ("click!")
button = tkinter.Button(top, text="OK", command=callback)
top.mainloop()
也可以專門導入從模塊需要的類:
import tkinter
from tkinter import Button
top = tkinter.Tk()
def callback():
print ("click!")
button = Button(top, text="OK", command=callback)
top.mainloop()
我沒有得到錯誤,當我嘗試這個,但按鈕不顯示在窗口上... – Binyamin
檢查,例如, http://effbot.org/tkinterbook/tkinter-hello-tkinter.htm。將他們的第一個示例與您自己的示例進行比較,查看程序中缺少的內容。 – freidrichen
至於說,「按鈕」沒有定義
你應該嘗試:
import tkinter
top = tkinter.Tk()
def callback():
print ("click!")
button = tkinter.Button(top, text="OK", command=callback)
top.mainloop()
或者@freidrichen resp ONSE您可以使用(不推薦)
from tkinter import *
或
import tkinter as tk
然後
tk.Button(top, text="OK", command=callback)
表示不推薦。 – scotty3785
FWIW,因爲後者將大約130個Tkinter名稱轉儲到您的全局名稱空間中,所以'tkinter import tk'比'tkinter import *'更好。這很麻煩,因爲它可能導致名稱衝突,特別是如果您使用「星形」導入導入另一個模塊的內容(並且它可能會減慢已經很慢的全局名稱查找過程)。 –
同意。鑑於大多數tkinter教程和示例都使用'from tkinter import *',所以新手很難理解這一點。 – scotty3785
你已經寫了'頂= tkinter.Tk()',而不是'頂部= TK( )'。這真的很明顯,爲什麼'button = Button(top,text =「OK」,command = callback)'不起作用。我建議你猜,但已經有足夠的答案 – Aemyl