当前位置: 首页 > 面试题库 >

如何将tkinter窗口置于其他窗口之上?

龚国源
2023-03-14
问题内容

我将Python 2与Tkinter和一起使用PyObjC,然后使用py2app

该程序运行良好,但是每次打开该程序时,窗口都会显示为隐藏状态,因此,直到我单击扩展坞上的图标以将其打开时,该窗口才会出现。

有什么方法可以控制此,使该窗口位于应用程序启动时打开的其他窗口之上?

需要澄清的是,在应用程序运行的整个过程中,它不一定都位于最前面。我只需要它在启动时位于其他窗口之上。


问题答案:

如果我接受您提供的代码并添加第一行和最后一行,则会得到:

from tkinter import *

root = Tk() 
root.title("app")
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
root.geometry("550x250+%d+%d" % (screen_width/2-275, screen_height/2-125))
root.configure(background='gold')
root.lift()

mainloop()

测试一下。我得到预期的窗口。你还有其他东西吗?如果这行得通,那么您正在代码中告诉它这样做。如果它执行的操作与您的实际程序相同,则您的窗口管理器正在执行此操作。如果没有更多信息,这是我能做的最好的事情。

编辑:

在OSX(尤其是使用Aqua的版本)上,tkinter的窗口可能显示在已经打开的窗口后面(此处有错误报告:http:
//bugs.python.org/issue9384,
但已关闭,无法修复)。root.lift()在这些情况下,添加了命令以将窗口移到堆栈的最前面,并且在所有其他情况下均无害。



 类似资料:
  • 在这个新窗口中,我找不到一种方法来确保打印标签,或者实际播放游戏是在my_window中完成的?? 在下面的代码中,我用函数launch_the_game中的标签(label(my_window,text=“game_num value”+str(game_num)).grid(行=5,列=0)来模拟它。这个标签是在root中打印的,而不是在my_window中打印的,这是怎么回事呢? 我不是在叫

  • 所以我正在用pygame做一个游戏,我也想用tkinter。我在tkinter窗口中嵌入了一个pygame窗口,但我似乎什么都做不了。 对于上下文,以下是完整的代码: 当我使用时,什么都不会发生。在类中使用pyplay是有效的,但是在我更复杂的游戏中,为所有变量使用self.variable似乎是不必要的。 如何在window类之外的pygame窗口中运行代码?

  • 主要内容:创建一个空白窗口,设置窗的位置主窗口控件(window)是一切控件的基础,它好比是一台高速运转的机器,而其他控件则相当于这台机器上的部件,比如齿轮、链条、螺丝等等。由此我们知道,主窗口是一切控件的基础,所有的控件的都需要通过主窗口来显示。 Tkinter 提供了一些关于主窗口对象的常用方法,在本节对这些方法做简单的介绍。 创建一个空白窗口 Tkinter 能够很方便地创建一个空白窗口,示例代码如下: 程序运行结果如下: 图1:

  • 我正在使用Pygame模块制作一个简单的游戏。我需要Tkinter窗口与Pygame窗口一起打开。 每当我试图打开两个窗口时,第二个窗口只有在我杀死第一个窗口后才会打开。 现在,我能想到的唯一解决方案是使用多线程。但是,我无法实现它。 我该怎么做呢?我真的很感激这里的帮助。谢谢你!

  • 问题内容: 我正在实现任务栏替换,类似于码头的应用程序切换器风格的程序。它使用OpenGL和键盘快捷键来做一些独特的事情,因此在设置方式上,窗口并不总是具有焦点。我想要实现它,以便可以将任意窗口带到前台,就像任务栏或ALT- TAB程序一样。 但是,我的代码只是导致应用程序图标在任务栏中闪烁。Windows API文档说这是应该发生的,但是我正在寻找一种解决方法。 我已经从以下示例改编了我的代码,

  • 问题内容: 我对文件选择器对话框的非常简单的实现似乎有一个问题,该问题要求我每次都尽量减少Netbeans才能到达它,现在特别是在测试中,这非常令人沮丧。 我在网上看到了一些解决方案,包括SO,但似乎没有一个解决之道,而对于我目前的水平,其他解决方案似乎很冗长和复杂。 我的一些尝试包括使用; 我可以设置特定的属性/方法来解决问题吗? 问题答案: 指向,它表示:“如果父级为null,则对话框不依赖可