问题描述
我想创建一个包含一个主框架的GUI,该框架包含多个框架,每个框架包含一个或多个tkinter小部件(标签,按钮,条目等)。每个小部件都使用GRID定位。我还希望通过按窗口右上角的Windows按钮或使用鼠标来更改窗口的尺寸时,所有小部件和文本的大小都可以调整。 可能吗? 谢谢
解决方法
是的,如果您使用grid()
方法,尽管窗口小部件大小会自动完成。您将不得不更改小部件上的字体大小。为了使字体能够根据窗口调整大小,您可能会有些棘手。您可以在以下事件中使用简单的if语句来获取不同的大小。
window = Tk()
def on_resize(self,event):
w_height = window.winfo_height()
w_width = window.winfo_width()
if(w_height > 500 and w_width > 600):
a_label.configure(font=("Helvetica","16")
else:
a_label.configure(font=("Helvetica","14")
window.bind(<Configure>,on_resize)
您还可以根据最初对窗口进行编程的方式来创建比例。
programmed_height = 1080
programmed_width = 1920
programmed_font = 16
window = Tk()
def on_resize(self,event):
w_height = window.winfo_height()
w_width = window.winfo_width()
if(w_width/w_height > programmed_width/programmed_height): # compare ratio
scaler = w_height / programmed_height
else:
scaler = w_width / programmed_width
font_size = programmed_font * scaler
font_tuple = ("Helvetica",str(int(font_size))) # int() should truncate any decimal points. You could also use round() if you prefer
window.bind(<Configure>,on_resize)
此代码是抽象的,因此事情不一定正确a_label
未声明。我也不确定比率比较是否足以满足您的需求。因为它可能会过早更改缩放器(
如果您有任何问题,请告诉我,也许我可以帮忙。