python - Tkinter 小部件的宽度搞砸了
问题描述
我最近开始从事密码银行项目。最近几天它运行良好,但它的 GUI 最近停止工作,我真的不记得我在代码中做了什么更改。本质上,tkinter 的小部件的宽度似乎受到某些东西的限制。这是一些屏幕截图。
这是我为这些 GUI 编写的代码。
# Main Menu
passRoot = tk.Tk()
passRoot.configure(bg=Global.LIGHT_COLOR)
passRoot.title("EGPB Main Password")
passRoot.geometry("600x300")
passRoot.resizable(False, False)
passRoot.protocol("WM_DELETE_WINDOW", lambda: sys.exit())
tk.Label(passRoot, bg=Global.LIGHT_COLOR, text="EGPB Password Bank", font=("Roboto Mono", 18, "bold")).place(anchor="center", x=300, y=20)
tk.Label(passRoot, bg=Global.LIGHT_COLOR, text="Insert Your Main Password", font=("Roboto Mono", 10)).place(anchor="center", x=300, y=75)
inp = tk.Entry(passRoot, font=("Roboto Mono", 10), width=30, show="*", bd=2, relief=tk.GROOVE, justify=tk.CENTER)
inp.place(anchor="center", x=300, y=150)
tk.Button(passRoot, bg=Global.MAIN_COLOR, text="OK", width=8, font=("Roboto Mono", 14), command=lambda: self.validatePassword(inp, passRoot)).place(anchor="center", x=300, y=250)
passRoot.mainloop()
# New Entry
root = tk.Tk()
root.configure(bg=Global.LIGHT_COLOR)
root.geometry("600x600")
root.resizable(False, False)
root.title("Add Entry")
tk.Label(root, bg=Global.LIGHT_COLOR, text="Adding a New Entry", font=("", 18)).place(anchor="center", x=300, y=20)
tk.Label(root, bg=Global.LIGHT_COLOR, text="Name", font=("Roboto Mono", 10)).place(anchor="center", x=300, y=75)
name = tk.Entry(root, font=("Roboto Mono", 10), width=45, bd=2, relief=tk.GROOVE, justify=tk.CENTER)
name.place(anchor="center", x=300, y=100)
tk.Label(root, bg=Global.LIGHT_COLOR, text="Password", font=("Roboto Mono", 10)).place(anchor="center", x=300, y=150)
password = tk.Entry(root, font=("Roboto Mono", 10), width=45, bd=2, relief=tk.GROOVE, justify=tk.CENTER)
password.place(anchor="center", x=300, y=175)
tk.Button(root, bg=Global.MAIN_COLOR, text="Generate\nPassword", font=("Roboto Mono", 10), command=lambda: self.generatePassword(password, root)).place(anchor="center", x=525, y=175)
tk.Label(root, bg=Global.LIGHT_COLOR, text="Email (Optional)", font=("Roboto Mono", 10)).place(anchor="center", x=300, y=225)
email = tk.Entry(root, font=("Roboto Mono", 10), width=45, bd=2, relief=tk.GROOVE, justify=tk.CENTER)
email.place(anchor="center", x=300, y=250)
tk.Label(root, bg=Global.LIGHT_COLOR, text="Site (Optional)", font=("Roboto Mono", 10)).place(anchor="center", x=300, y=300)
site = tk.Entry(root, font=("Roboto Mono", 10), width=45, bd=2, relief=tk.GROOVE, justify=tk.CENTER)
site.place(anchor="center", x=300, y=325)
tk.Label(root, bg=Global.LIGHT_COLOR, text="Username (Optional)", font=("Roboto Mono", 10)).place(anchor="center", x=300, y=375)
username = tk.Entry(root, font=("Roboto Mono", 10), width=45, bd=2, relief=tk.GROOVE, justify=tk.CENTER)
username.place(anchor="center", x=300, y=400)
tk.Label(root, bg=Global.LIGHT_COLOR, text="Notes (Optional)", font=("Roboto Mono", 10)).place(anchor="center", x=300, y=450)
note = tk.Entry(root, font=("Roboto Mono", 10), width=45, bd=2, relief=tk.GROOVE, justify=tk.CENTER)
note.place(anchor="center", x=300, y=475)
btn = tk.Button(root, bg=Global.MAIN_COLOR, width=8, text="OK", font=("Roboto Mono", 14), command=lambda: self.addEntry(name.get(), password.get(), root, email.get(), site.get(), username.get(), note.get()))
btn.place(anchor="center", x=300, y=550)
如果你们中的任何人知道我做错了什么以及如何解决它,我将不胜感激。
非常感谢
解决方案
.place(relx=0, 依赖=0.05, relheight=0.03, relwidth=1) !!使用 0-1.0 而不是像素完全可以正确缩放它们,尤其是 relheight、relwidth,它们是相对的!