我想在我的运行在ubuntu上的python脚本中显示一个信息窗口.我正在使用以下代码:
import tkMessageBox
tkMessageBox.showinfo("Say Hello", "Hello World")
Run Code Online (Sandbox Code Playgroud)
这样可以,但是会显示一个空窗口,顶部有消息框.如何摆脱窗口并将消息框置于屏幕中心(窗口管理器是gnome 2)?
这只是为了显示来自命令行脚本的一些信息(密码,这就是为什么我不想将它回显到控制台).
Bry*_*ley 27
Tkinter必须有一个根窗口.如果您不创建一个,将为您创建一个.如果您不想要此根窗口,请创建它然后隐藏它:
import Tkinter as tk
root = tk.Tk()
root.withdraw()
tkMessageBox.showinfo("Say Hello", "Hello World")
Run Code Online (Sandbox Code Playgroud)
您的另一个选择是不使用tkMessageBox,而是将您的消息放在根窗口中.这种方法的优点是可以使窗口看起来与您希望它看起来完全一样.
import Tkinter as tk
root = tk.Tk()
root.title("Say Hello")
label = tk.Label(root, text="Hello World")
label.pack(side="top", fill="both", expand=True, padx=20, pady=20)
button = tk.Button(root, text="OK", command=lambda: root.destroy())
button.pack(side="bottom", fill="none", expand=True)
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
(我个人会选择一种更面向对象的方法,但是我试图在这个例子中保持代码较小)
要在创建根窗口时避免"闪烁",请在接受的答案上使用此略微变化:
import Tkinter as tk
root = tk.Tk()
root.overrideredirect(1)
root.withdraw()
tkMessageBox.showinfo("Say Hello", "Hello World")
Run Code Online (Sandbox Code Playgroud)
对于Python 3:
import tkinter, tkinter.messagebox
def messagebox(title, text):
root = tkinter.Tk()
root.withdraw()
tkinter.messagebox.showinfo(title, text)
root.destroy()
Run Code Online (Sandbox Code Playgroud)
pywin32安装后具有本机 Windows 支持:
try:
from win32ui import MessageBox
except ImportError:
import tkinter, tkinter.messagebox
def MessageBox(text, title):
root = tkinter.Tk()
root.withdraw()
tkinter.messagebox.showinfo(title, text)
root.destroy()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16120 次 |
| 最近记录: |