没有窗口的Tkinter消息框?

时间:2013-06-24 16:43:14

标签: python tkinter

我想在我的运行在ubuntu上的python脚本中显示一个信息窗口。我正在使用以下代码:

import tkMessageBox
tkMessageBox.showinfo("Say Hello", "Hello World")

这样可行,但显示一个空窗口,顶部显示消息框。如何摆脱窗口并将消息框置于屏幕中央(窗口管理器是gnome 2)?

这只是为了显示命令行脚本中的一些信息(一个密码,这就是为什么我不想将它回显到控制台)。

5 个答案:

答案 0 :(得分:25)

Tkinter必须有一个根窗口。如果您不创建一个,将为您创建一个。如果您不想要这个根窗口,请创建它然后隐藏它:

import Tkinter as tk
root = tk.Tk()
root.withdraw()
tkMessageBox.showinfo("Say Hello", "Hello World")

您的另一个选择是使用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()

(我个人会选择一种更面向对象的方法,但我试图在这个例子中保持代码较小)

答案 1 :(得分:6)

避免"闪光"在创建根窗口时,在接受的答案上使用这个微小的变化:

import Tkinter as tk
root = tk.Tk()
root.overrideredirect(1)
root.withdraw()
tkMessageBox.showinfo("Say Hello", "Hello World")

答案 2 :(得分:1)

单独导入消息框。例如:

from tkinter import *
import tkinter.messagebox

from tkinter import messagebox

答案 3 :(得分:0)

对于Python 3:

import tkinter, tkinter.messagebox

def messagebox(title, text):
    root = tkinter.Tk()
    root.withdraw()
    tkinter.messagebox.showinfo(title, text)
    root.destroy()

在安装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()

答案 4 :(得分:0)

这适用于 python 3

from tkinter import *
from tkinter import messagebox

root = Tk()
root.withdraw()
messagebox.showinfo("Window Title", "Your Message")