Python - Tkinter 文本大小未调整大小

标签 python python-3.x tkinter tkinter-layout

我正在尝试使用 Tkinter 制作一个可以调整大小的窗口,并且效果很好。但我希望字体大小也能按比例缩放。输入框的大小完美调整,但文本大小保持不变。我也可以更改输入文字大小吗?我该怎么做?

提前谢谢您。

这是迄今为止我的代码片段:

# defining home page
master = Tk()

master.iconbitmap('program_icon.ico')
master.geometry("410x280")
master.configure(background="#ff4f30")
master.title("Emailer : Log In | Sign Up")

for i in range(1, 10, 1):
    master.rowconfigure(i, weight=3)
for i in range(1, 5, 1):
    master.columnconfigure(i, weight=3)

master.columnconfigure(1, weight=50)
master.rowconfigure(2, weight=50)
master.rowconfigure(3, weight=50)
master.rowconfigure(6, weight=50)
master.rowconfigure(7, weight=50)

# adding text
l1 = Label(master, text="Welcome to the Emailer \n Sign up or Log in \n Note: Your password is protected by hash encryption", bg="#ff4f30").grid(row=0, column=1, sticky=N+S+W+E)
l2 = Label(master, text="Log In", bg="#ff4f30").grid(row=1, column=1, sticky=N+S+W+E)
l3 = Label(master, text="Email", bg="#ff4f30").grid(row=2, sticky=N+S+W+E)
l4 = Label(master, text="Password", bg="#ff4f30").grid(row=3, sticky=N+S+W+E)

l5 = Label(master, text="Sign Up", bg="#ff4f30").grid(row=5, column=1, sticky=N+S+W+E)
l6 = Label(master, text="Email", bg="#ff4f30").grid(row=6, sticky=N+S+W+E)
l7 = Label(master, text="Password", bg="#ff4f30").grid(row=7, sticky=N+S+W+E)

# adding top menu
menubar = Menu(master)
menubar.add_command(label="Help", command=helpuser)
menubar.add_command(label="Quit", command=master.quit)
master.config(menu=menubar)

# defining user input boxes
e1 = Entry(master)
e2 = Entry(master)
e3 = Entry(master)
e4 = Entry(master)

e1.grid(row=2, column=1, sticky=N+S+W+E)
e2.grid(row=3, column=1, sticky=N+S+W+E)
e3.grid(row=6, column=1, sticky=N+S+W+E)
e4.grid(row=7, column=1, sticky=N+S+W+E)

# setting e2 and e4 to only display '*' character
e2.config(show="*")
e4.config(show="*")

# defining buttons
Button(master, text='Sign Up', command=sign_up).grid(row=8, column=2, sticky=W + E, pady=4)
Button(master, text='Log In', command=log_in).grid(row=4, column=2, sticky=W + E, pady=4)

# starting window
mainloop( )

最佳答案

也许你可以使用字体对象并开发一个功能 绑定(bind)到正在调整大小的窗口?

import tkinter as tk
import tkinter.font as tkFont


master = tk.Tk()
my_font = tkFont.Font(size=10)
def resizer(event):
   if event.width in range(300,325):
      my_font.configure(size=10)   
   elif event.width in range(400,425):
      my_font.configure(size=20)
   elif event.width > 600:
      my_font.configure(size=30)

a_label= tk.Label(font=my_font, text="Welcome")
a_label.grid()
an_entry = tk.Entry(font=my_font)
an_entry.grid()
an_entry.insert(0,'some text')
master.bind("<Configure>", resizer)
tk.mainloop()

关于Python - Tkinter 文本大小未调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48733923/

相关文章:

python - Twisted HTTP 代理 channel 在 LostConnection 上设置为 None 但 LostConnection 尚未被调用

python - 仅过滤特定扩展名的文件 - Python

python - 为什么 dateutil.parser.parse() 在此字符串上得到的年份错误?

python - 删除 Tkinter 上小部件的行分隔

python - ttk.Treeview - 无法更改行高

c# - 从 Excel 文件创建有效 XML 文件的最佳工具

Python - 在末尾格式化整数

python - 如何在 Python 3 中复制 Python 2 风格的 len()?

python - 如何避免 tkinter <<ListboxSelect>> 和 .curselection() 在列表框之外检测事件/选择?

python - 如何根据字典对字符串进行分类?