from tkinter import*
window = Tk()
window.title('Scale控件的测试')
window.geometry('660x300')
scl=Scale(window)
scl.pack()
window.mainloop()
lab=label(window,bg='yellow',width=30,
font=('微软雅黑',20),
text='测试开始...')
lab.pack()
def print_selection(v):
lab.config(text='你拖动的数值为:'+v)
scl = Scale(window,label='请用鼠标点击拖动...',
from_=0,to=100,orient=HORIZONTAL,
length=600,showvalue=0,tickinterval=10, #tickinterval滑动间隔
resolution=0.01,command=print_selection)
scl.pack()
报错显示NameError: name 'Scale' is not defined怎么回事呀
参考GPT和自己的思路:这个问题的原因是,你在使用Scale组件之前没有先从tkinter中导入Scale类,因此程序不知道Scale是什么。只导入了tkinter的顶层类,比如Tk和Label等。
要解决这个问题,只需在开头添加如下导入语句即可:
from tkinter import *
from tkinter import Scale
这样,程序就知道Scale是什么,并且能够正常运行了。
可能是Scale类没有成功导入,Tkinter库没有正确安装
可以试一下将Tkinter库重命名为“tk”,并使用“tk.Scale”来访问Scale类。
import tkinter as tk
# ...
scl = tk.Scale(window, ...)
该回答引用于gpt与OKX安生共同编写:
您的代码中缺少了一个Label
模块的导入语句,导致程序无法识别Label
和Scale
控件。解决方法是在代码开头添加以下导入语句:
from tkinter import *
from tkinter import Label # 添加这一行
或者,您也可以将Label
控件的创建放在Scale
控件之前,这样就不需要导入Label
模块了,如下所示:
from tkinter import *
window = Tk()
window.title('Scale控件的测试')
window.geometry('660x300')
# 创建Label控件
lab = Label(window, bg='yellow', width=30,
font=('微软雅黑', 20),
text='测试开始...')
lab.pack()
def print_selection(v):
lab.config(text='你拖动的数值为:'+v)
# 创建Scale控件
scl = Scale(window, label='请用鼠标点击拖动...',
from_=0, to=100, orient=HORIZONTAL,
length=600, showvalue=0, tickinterval=10,
resolution=0.01, command=print_selection)
scl.pack()
window.mainloop()
在上述代码中,我们先创建了一个Label
控件,然后再创建Scale
控件,并将其放置在Label
控件下面。这样做的好处是,既可以避免导入额外的模块,又可以让程序更加清晰易懂。