当前位置: 首页 > 知识库问答 >
问题:

如何设置我的小部件的大小和填充动态以适应Tkinter窗口?

龚鸿雪
2023-03-14

我是新来的,还在学习。我的桌面分辨率是1366x768,我正在为2048x768的环境开发。现在,我通过这样检测来设置窗口分辨率-

w = main_container.winfo_screenwidth()
h = main_container.winfo_screenheight()
main_container.geometry(str(w) + "x" + str(h))

现在我有几个屏幕,我不能在每个屏幕上使用网格。就像我有一个登录屏幕,我有一个这样的框架-

self.frame_background = tk.Frame(self.frame_parent, bg='#ffffff')
self.frame_background.pack(fill='both', expand=True, padx=100,
                               pady=100)

这只是一个小部件的例子。由于padx和pady的值固定为100,如果我在640x480分辨率的设备上运行我的应用程序,布局会变得过于紧张,在这个框架内几乎看不到任何东西。如何根据屏幕大小和分辨率动态设置这些padx和pady以及其他宽度和高度值?

共有1个答案

丌官玺
2023-03-14

现在我有几个屏幕,我不能在每个屏幕上使用网格。

你为什么不能?没有任何东西可以阻止您在每个屏幕上使用网格。尽管如此,在不同的框架中混合和匹配packgrid还是很常见的,这可以说是一种最佳实践。

就像我有一个登录屏幕,我有一个这样的标签...

该语句后面的代码没有标签,因此很难知道您要做什么。

如果我在640x480上运行我的应用程序。。。

首先,您说您的桌面分辨率为1366x768,然后说您的目标是2048x768,现在的目标是640x480。这是一个相当广泛的价值观。如果你必须支持低至640x480的东西,你绝对不应该硬编码填充到如此大的值。通常,填充长度不会超过一个或两个。Tkinter应用程序可以适应如此大范围的屏幕大小,但这并不依赖于尽可能多地硬编码小部件的大小和填充。

如何根据屏幕大小和分辨率动态设置这些padx和pady以及其他宽度和高度值?

一般来说,你不应该那样做。tkinter的一般经验法则是,将小部件设置为所需的最小尺寸,让几何体管理员担心拉伸或收缩它们以适应可用空间。这条规则有一些例外,但总的来说,这条规则运行得相当好。

不幸的是,如果不知道更多你想做什么,几何管理问题很难回答。例如,我们需要知道为什么你认为你需要填充100像素。这似乎非常不寻常。另外,我们需要知道你的框架里还有什么,你的框架里有什么,等等。

我的建议是删除填充,或者将它们设置为非常小的值。然后,确保使用所有可用的几何体管理器选项,例如填充展开打包,以及粘性栅格的其他选项。

 类似资料:
  • 在tkinter中调整窗口大小时,有没有办法动态调整小部件的大小? 这是代码: 当我调整窗口大小时,窗口小部件的宽度和高度保持不变。 我想要的是根据窗口的大小动态调整窗口小部件的大小。 有没有办法在tkinter中实现这一点? 如果有人能帮我,那就太好了。

  • 问题内容: 我需要将用户输入的文本显示为固定大小的div。我想要的是自动调整字体大小,以使文本尽可能多地填充框中。 所以-如果div为400px x 300px。如果有人输入ABC,那么它确实是大字体。如果他们输入一个段落,那么它将是很小的字体。 我可能想从最大字体大小开始-也许是32px,并且当文本太大而无法容纳容器时,请缩小字体大小直到适合为止。 问题答案: 和我的HTML是这样的 这是我的第

  • 问题内容: 我的问题如下:我有几个文件,并创建了一个带有名称的下拉菜单,接下来我需要的是一个选项菜单,只要选择文件名以显示特定文件中的某些数据,就可以更改该菜单。需要明确的是,我的问题只是关于从下拉菜单中选择一个选项时如何更改选项菜单。感谢您的帮助。 问题答案: OptionMenu小部件不过是一个便利类,它创建与菜单关联的菜单按钮。您可以通过属性进入此菜单。唯一的技巧是知道菜单项应该做什么,这无

  • 我收到了有关。 故事是我有一个名为,我通过重写方法自己重新绘制它。绘图的内容是动态生成的。所以直到运行时我才知道它的大小。问题是我如何/在哪里可以动态设置其超级视图(滚动视图)的内容大小?对此有什么想法吗?

  • 我正在尝试用tkinter构建一个navigator应用程序,并且对于制作GUI和一般使用tkinter非常陌生。当整个窗口调整大小时,我似乎不知道如何很好地调整小部件的大小。当前调整大小的工作方式如下图所示。 顶部的描述是一个tkinter消息小部件,中间的导航树是一个检查表,两个按钮是常规按钮,按钮下面的文本是一个标签对象。我把这些放在tkinter根中。grid()方法,并根据需要使用ipa

  • 问题内容: 我如何在tkinter窗口小部件居中的情况下向tkinter窗口添加填充?我试过了: 和 我只想在标签顶部填充30像素。 问题答案: 填充选项和的和方法可利用一个 2元组 表示左/右和上/下填充。 这是一个例子: