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

将Python gui窗口带到前面?

孙嘉悦
2023-03-14

我正在尝试使用Python's gui模块中的一个来检索用户的Twitter用户名和密码:

下面是我的第一次尝试(使用easygui):

import easygui
username = easygui.enterbox("Enter your Twitter username")
password = easygui.passwordbox("Enter your Twitter password")

下面是我的第二次尝试(使用tkinter):

import tkinter as tk
from tkinter import simpledialog

application_window = tk.Tk()
application_window.attributes("-topmost", True)
username = simpledialog.askstring("Input", "What is your Twitter username?")
password = simpledialog.askstring("Input", "What is your Twitter password?", show="*")
application_window.destroy()

目前,两个gui都自动出现。相反,一个Python图标出现在我的Windows任务栏上,我必须单击该图标才能显示gui。有什么编程方式可以让gui自动弹出吗?或者我可以使用另一个模块来实现这一点?

共有2个答案

寿子默
2023-03-14

使用PySimpleGUI可以非常容易地完成。有几种方法。一个是内置函数popupgettext。这将创建2个窗口,一个用于用户名,一个用于密码。或者,您可以创建自己的自定义布局,在一个窗口中同时要求两者。

import PySimpleGUI as sg

username = sg.PopupGetText('Enter your username')
password = sg.PopupGetText('Entery your password', password_char='*')

layout = [[sg.Text('Username'), sg.Input()],
          [sg.Text('Password'), sg.Input(password_char='*')],
          [sg.OK()]]

button, (username, password) = sg.Window('Login').Layout(layout).Read()
司徒高丽
2023-03-14

simpledialog模块生成一个新的顶层窗口,这是您想要前移的窗口,而不是根窗口。

在运行tkinter GUI时效果最好。我认为使用 会更好,因为它实际上使用了一个tkinter Tk实例:

import easygui

fieldNames = ["Username", "Password"]
values = easygui.multpasswordbox("Enter Twitter information", "Input", fieldNames)
if values:
    username, password = values
else:
    # user pushed "Cancel", the esc key, or Xed out the window
    username, password = None, None
print(username, password)

如果这不起作用,easygui可以使用最高级的技巧:

import easygui

fieldNames = ["Username", "Password"]
mb = easygui.multpasswordbox("Enter Twitter information", "Input", fieldNames, run=False)
mb.ui.boxRoot.attributes("-topmost", True)
mb.run()
if mb.values:
    username, password = mb.values
else:
    # user pushed "Cancel", the esc key, or Xed out the window
    username, password = None, None
print(username, password)

或者只是做你自己的对话。

 类似资料:
  • 如果单击父窗口上的链接,子窗口将打开,在子窗口中选择值后,子窗口将自动关闭,控件仍处于关闭窗口中。如何将控件带回父窗口。

  • 我写了一个小GUI程序与python在tkinter的窗口。我的窗口必须在全屏游戏窗口的前面。 此刻,我用这句话: 它适用于普通窗口(浏览器,浏览器,...),但如果我启动游戏到全屏模式,我的窗口隐藏在游戏后面。 为什么会发生这种情况?调用游戏可能类似于覆盖我的属性的? 我的问题还有别的解决办法吗?也许可以告诉windows,我的窗口应该在特定窗口(游戏窗口)的前面?

  • 问题内容: 我们有一个Java应用程序,当远程控制机制激活该应用程序中的某些内容时,需要将其置于前台。 为了实现这一点,我们已经在该类的被调用方法中实现了该方法,该方法表示我们的应用程序的框架(扩展为),其实现如下: 在Windows XP下,此功能在第一次调用时有效,第二次仅任务栏上的选项卡闪烁时,框架不再位于最前面。Win2k也是如此。在Vista上似乎工作正常。 你有什么想法? 问题答案:

  • 我正在用PySide和Python2.7编写一个程序。 这段代码显示一个工作任务栏图标和一个iconmenu。现在,当我点击“Show Window”时,我想在图标的相同位置加载一个停靠到任务栏的Widget/Windows。 如果我会使用几何学,这将永远不会工作,因为有些人的任务栏在顶部,或在屏幕的侧面。 如何用pyside将窗口/小部件停靠到任务栏? 谢谢。

  • 问题内容: 我已经连续三天在寻找答案。问题是我有一个页面,该页面上的链接应使用AJAX内容加载Colorbox,而AJAX内容又包含应在同一Colorbox模态窗口中加载的链接。到目前为止,我设法通过以下方式使其(部分地)起作用: 如果单击链接,它将加载一个Colorbox窗口,但是如果单击该链接,它将在此窗口中打开另一个Colorbox窗口。我希望将内容加载到当前内容中。将不胜感激。谢谢! 主窗

  • 问题内容: 我目前正在等待一个非常重要的公告,并且我已经创建了一个简单的应用程序,每隔30分钟检查一次公告是否发布 发布公告后,我希望弹出一个窗口并通知我。该窗口只是一个简单的JFrame,其中包含一些文本。 我有一堂课,叫做公告。 在此类内,我为框架定义了另一个称为Form的类,因此我有类似以下内容: toFront函数根本不起作用。 例如,我要执行的操作是:在浏览时,我要弹出该窗口并将焦点设置