【问题标题】:Getting tkinter Messagebox at top of the screen in python在python的屏幕顶部获取tkinter Messagebox
【发布时间】:2018-09-15 13:35:52
【问题描述】:

我需要在屏幕顶部显示消息框。所以,我尝试了:

from tkinter import *
from tkinter import ttk
from tkinter import messagebox
root = Tk()

top_box = Toplevel(root)

messagebox.showerror("title","message",parent=top_box)

root.mainloop()

我得到的结果是:任务栏给人一种新事物已经打开的吸引力。

但它没有显示在屏幕上。 (应该首先可见/优先考虑它..)

【问题讨论】:

  • 您的窗口是否允许您直接在命令提示符下执行此代码?如果是这样,如果您的程序静默崩溃,如果您直接通过命令提示符测试您的程序,您可能会在命令行的输出中发现一些错误报告。
  • @SebasSBM 不,它不会在命令行输出中显示任何错误...

标签: python python-3.x tkinter messagebox


【解决方案1】:

messagebox 模块使用platform native functions on Windows 来创建它的对话框。它独立于任何Toplevel 小部件工作。如果您想使用 Toplevel 创建自定义错误对话框,您可以这样做,您可以使用 Toplevel.lift(self) 将其移动到窗口管理器的顶部。

没有选项可以使消息框出现在所有其他窗口的顶部。唯一的方法是使用Toplevel 创建一个自定义错误窗口。如果您在程序的其他位置创建tk.Tk,这样的事情应该可以解决问题:

import tkinter as tk


class Error(tk.Toplevel):
    def __init__(self, message):
        tk.Toplevel.__init__(self)
        tk.Label(self, text=message).grid(row=0, column=0)
        tk.Button(self, command=self.destroy, text="OK").grid(row=1, column=0)
        self.lift()  # Puts Window on top
        self.grab_set()  # Prevents other Tkinter windows from being used


def showerror(string):
    Error(string)


if __name__ == '__main__':
    w = tk.Tk()
    showerror("Help!")
    w.mainloop()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-09
    • 2017-05-20
    • 2010-11-16
    • 1970-01-01
    • 2011-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多