Python - 有没有办法扩展现有Tkinter Tk()和Toplevel()小部件的分辨率? (变焦式)

时间:2017-10-17 07:01:05

标签: python tkinter

我刚刚使用python和tkinter小部件创建了一个应用程序。
在Tk和Toplevel小部件中有标签,框架,按钮等。
但是,当我支持多种分辨率时,它包含了数千个代码并且非常讨厌调整每个小部件的大小。

有没有办法扩展现有Tkinter Tk()和Toplevel()小部件及其子窗口小部件的分辨率? (变焦式)

如果没有,那么支持具有相同比率的python应用程序的多个分辨率的最佳方法是什么?

非常感谢任何帮助,抱歉英语不好。

2 个答案:

答案 0 :(得分:1)

是的,但这取决于您在程序中使用的几何管理器。

对于.pack()方法(可以说是最简单的几何方法"智能" GUI设计),您可以在声明{时使用一系列属性小部件上的{1}}。这些属性包括(但不限于).pack()fillexpandanchorpadx等。

下面显示了一组三个按钮的示例,如果它改变或初始化为与开发期间使用的大小不同,它将自动展开以适合窗口。

pady

对于from tkinter import * root = Tk() btn1 = Button(root, text="btn1") btn2 = Button(root, text="btn2") btn3 = Button(root, text="btn3") btn1.pack(fill="both", expand=True) btn2.pack(fill="both", expand=True) btn3.pack(fill="both", expand=True) root.mainloop() 方法,您需要使用函数.grid()Grid.columnconfigure()。这两个都具有属性Grid.rowconfigure,如果窗口中有更多可用空间,则确定应为哪些行和列赋予优先级以分配额外空间。将所有行和列设置为weight为1意味着它们将被均等地给予空间。在窗口小部件上声明weight时,您还需要使用sticky属性。

下面显示了一组三个按钮的示例,如果它改变或初始化为与开发期间使用的大小不同,它将自动展开以适合窗口。

.grid()

使用from tkinter import * root = Tk() for column in range(3): Grid.columnconfigure(root, column, weight=1) for row in range(1): Grid.rowconfigure(root, row, weight=1) btn1 = Button(root, text="btn1") btn2 = Button(root, text="btn2") btn3 = Button(root, text="btn3") btn1.grid(column=0, row=0, sticky=N+S+E+W) btn2.grid(column=1, row=0, sticky=N+S+E+W) btn3.grid(column=2, row=0, sticky=N+S+E+W) root.mainloop() 将会困难得多,你需要设置一个函数设置,它会触发每个窗口调整大小事件,这会计算按钮需要扩展的大小。

这看起来如下所示:

.place()

从主观上讲,from tkinter import * class App: def __init__(self, root): self.root = root self.button = Button(self.root, text="Button") self.button.place(relx=0.5, rely=0.5, anchor="center") self.root.bind("<Configure>", self.resize) def resize(self, *args): self.button.configure(width=self.root.winfo_width(), height=self.root.winfo_height()) root = Tk() App(root) root.mainloop() 往往更容易,但这一切都归结为您愿意投入多少精力来实现当前计划。

答案 1 :(得分:0)

无法发表评论,所以我在详细的Ethan答案中添加了一个简短的提示。您可以使用包,网格或两者的组合来设计tkinter中的大多数GUI(通过在其中一个窗口上放置框架,并在每个框架内使用网格或包,到&#34;放置&#34; ;小工具)。您可以在窗口调整大小时调整配置以获取正确的位置和大小。保留放置器用于特殊情况(例如将某些小部件叠加在其他顶部)