【发布时间】:2019-12-29 13:07:13
【问题描述】:
我是 Tkinter 的新手,并尝试制作一个小密码生成器。对于密码的长度,我想实现一个 Scale 小部件。我在显示小部件的标签时遇到了一个奇怪的问题,我不明白为什么我会得到两种不同的设计。
所以这是我的主程序中的一个 sn-p:
root = Tk()
root.geometry("460x100")
root.resizable(0,0)
root.title("Password Generator")
pw_label = Label(root, text="Password").grid(row=0, column=0, pady=4, padx = 4)
length_label = Label(root, text="Length").grid(row=2, column=0, pady=4, padx = 4)
pw_input = Entry(root, width=50)
length_input = Scale(root, from_=8, to=50, orient=HORIZONTAL, length= 300)
length_input.set(30)
pw_input.grid(row = 0, column = 1, pady=4, padx = 4)
length_input.grid(row = 2, column = 1, pady=4, padx = 4)
Button(root, text='Quit', command=root.quit).grid(row=3, column=2, sticky=W, pady=4)
Button(root, text='Generate', command=rand_pw).grid(row=2, column=2, sticky=W, pady=4)
Button(root, text='Copy', command=copy).grid(row=0, column=2, sticky=W, pady=4)
root.mainloop()
如您所见,我有一个蓝色滑块,并且在 Scale 下没有刻度。
这是另一个最小的滑块示例:
from tkinter import *
root = Tk()
root.geometry("500x100")
length_label = Label(root, text="Length").grid(row=0, column=0, pady=4, padx = 4)
w2 = Scale(root, from_=0, to=50, tickinterval= 50, orient=HORIZONTAL, length=400)
w2.set(23)
w2.grid(row=0, column=1)
mainloop()
有人可以向我解释为什么我会在那里得到两种不同的样式吗?这两个程序都在 PyCharm 的同一个项目文件夹中。此外,我在同一环境中启动这两个示例。
我想我只是犯了一个愚蠢的错误,但我找不到它。
【问题讨论】:
-
您可能会得到两种不同的样式,因为您正在以不建议的方式同时导入 tk 和 ttk。请提供包含导入的minimal reproducible example,它准确地创建了您问题中显示的第一个样式。
-
是的,这正是问题所在。我删除了 tkinter.ttk 导入,现在一切正常,谢谢!
标签: python tkinter tkinter-scale