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

如何在启动时最大化tkinter应用程序,就像模拟最大化按钮一样?

强保臣
2023-03-14

我试图找到这个答案,但令人惊讶的是几乎没有运气。以下是我正在运行的:

Python 3.8.5 64位

TKinter 8.6

我找到的屏幕大小的两个来源是:

import tkinter as tk
from win32api import GetSystemMetrics

screen_height = GetSystemMetrics(1)
screen_width = GetSystemMetrics(0)

mainWindow = tk.Tk()

mainWindow.configure(width=screen_width, height=screen_height)

mainWindow.mainloop()

这种方法的问题是,它创建了一个从一个角落到另一个角落的窗口,这是我的屏幕的确切大小,这意味着考虑到任务栏和边框,应用程序会从屏幕上剪辑下来,也会在任务栏下面。

我发现还有一种方法:

import tkinter as tk

mainWindow = tk.Tk()
mainWindow.state("zoomed")

mainWindow.mainloop()

这正是我想要的,模仿应用程序的外观,如果我点击最大化按钮,将屏幕的两个边缘对齐,并“Rest”在任务栏的顶部。

但是,如果要创建与窗口大小相同的画布,但在Tk对象上使用winfo_height()winfo_width(),则返回的值分别为1和1。我不确定这是否是因为这些值是在将状态设置为“缩放”之前设置的,而不是tk中的高度和宽度参数。画布的单位为像素(默认)、英寸、毫米、厘米或打印点。因此,我无法使用这些精确的值来创建画布。

import tkinter as tk

mainWindow = tk.Tk()
mainWindow.state("zoomed")

mainCanvas = tk.Canvas(height=mainWindow.winfo_height(), width=mainWindow.winfo_width(), bg="blue")

mainCanvas.pack()

mainWindow.mainloop()

最后是可以利用的属性部分:

#blah code the same as before

mainWindow.attributes("-fullscreen", True)

#blah code till the end as before

不幸的是,这会创建一个全屏应用程序,就像你在大多数浏览器上点击F11或者在youtube视频上全屏显示一样。这显然不是我想要的。

我是否需要创建一个侦听器,在获取应用程序的高度和宽度之前,等待窗口状态更改为缩放?或者是否有某种方法可以简单地在“最大化”状态下启动应用程序,就好像默认情况下按下了“最大化”按钮一样。

我简直不敢相信在tk类的. state方法上找到任何东西的困难,也不相信任何关于简单地最大化TK应用程序窗口的信息。我发现的一切都落在了我分享的三个例子中的一个,我将非常感谢任何人能提供的任何帮助!

非常感谢。

共有1个答案

鄢飞鸾
2023-03-14

不要试图以正确的大小创建画布,而是以您认为应该的最小大小创建画布,然后让tkinter的几何管理器将其展开以填充窗口。

例如,如果您使用maincavas。pack(fill=“both”,expand=True)它将使画布填充窗口,而无需计算画布的大小,也无需在启动期间调用update

 类似资料:
  • 问题内容: 我有一个python程序,它将打开一个新窗口以显示一些“关于”信息。该窗口有其自己的关闭按钮,而我已使其不可调整大小。但是,最大化和最小化按钮仍然存在,我希望它们消失。 我正在使用Tkinter,包装所有信息以显示在Tk类中。 到目前为止的代码如下。我知道它不是很漂亮,我打算将信息扩展到一个类中,但是我想在继续之前解决这个问题。 任何人都知道如何管理Windows管理器显示哪些默认按钮

  • 我将GLFW3.2与LWJGL和Java一起使用。 我想删除窗口上的最大化和最小化按钮,而窗口保持可调整大小,我找不到任何方法在glfw留档中做到这一点。 我见过这个解决方案,但它只适用于窗口,使用C,我正在寻找的解决方案需要跨平台。 是否有可能使用glfw实现这一点?或者我应该使用一个未装饰的glfw窗口并绘制自己的标题栏?

  • 问题内容: 我需要从中删除最大化和最小化按钮。请提出建议。 问题答案:

  • 我想初始化一个窗口为最大化,但我不知道如何做。我在Windows7上使用Python3.3和Tkinter 8.6。我想答案就在这里:http://www.tcl.tk/man/Tcl/Tkcmd/wm.htmam.m8但是我不知道如何将它输入到我的python脚本中 此外,我需要得到窗口的宽度和高度(既是最大化的,如果用户重新缩放它之后),但我想我可以自己找到。

  • 我正在创建一个JavaFX2.2程序,需要创建自定义UI控件(仅限于顶部的最小化最大化/恢复关闭按钮)。我需要为这个目的创建自定义按钮,简单到刚刚创建。 我只需要最小化和最大化/恢复按钮的真正代码(关闭按钮相当于儿戏)。最小化按钮将应用程序恢复到任务栏。最大化按钮将其最大化以适应用户的屏幕,并在最大化时切换到还原按钮。当单击恢复按钮时,窗口将恢复到其初始大小(1200x600)。 我尝试了在我的f

  • 问题内容: 是否可以在JDialog中添加最大化/最小化按钮?如果不是,那么我们可以将这些按钮添加到JPanel吗? 我有一个JPanel,并且在该面板内部有一个JDialog。我想添加一个最小化/最大化按钮,以便当单击该按钮时,JDialog会根据JPanel调整JDialog下的组件。就像当我单击最大化时,jpanel应该被放大,并且该面板(JDialog)中的组件也被放大,反之亦然,以最小化

  • 问题内容: 如何创建模态窗口并具有最大化按钮的窗口? 那么有可能创建模态或创建带有最大化按钮的按钮吗? 问题答案: 在大多数外观上,模态窗口(例如)没有最大化按钮,只是因为根本不应该将它们最大化(或最小化)。 可以通过一些技巧添加一个按钮,但是这完全违反了预期的工作方式。如果需要最大化按钮,最好的解决方案是使用a 或a 而不是a 。这些窗口支持最大化和最小化。 警告: 无论如何,您都不应这样做。