簡體   English   中英

沒有窗口的 Tkinter 消息框?

[英]Tkinter messagebox without window?

我想在運行在 ubuntu 上的 python 腳本中顯示一個信息窗口。 我正在使用以下代碼:

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

這有效,但顯示了一個空窗口,消息框位於頂部。 如何擺脫窗口並僅將消息框居中顯示在屏幕上(窗口管理器是 gnome 2)?

這只是為了顯示來自命令行腳本的一些信息(密碼,這就是為什么我不想將它回顯到控制台)。

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()

(我個人會選擇一種更面向對象的方法,但我試圖保持這個例子的代碼很小)

為避免在創建根窗口時出現“閃爍”,請對已接受的答案使用此細微變化:

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

對於 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()

單獨導入消息框。 例如:

from tkinter import *
import tkinter.messagebox

要么

from tkinter import messagebox

這適用於python 3

from tkinter import *
from tkinter import messagebox

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM