gpt4 book ai didi

python - Tkinter 中的非阻塞信息对话框

转载 作者:太空宇宙 更新时间:2023-11-03 11:33:43 27 4
gpt4 key购买 nike

我需要一个简单的信息框来显示一些状态输出,我也可以使用 print 将其转储到控制台。我发现最简单的可能性如下:

import Tkinter as tk
root = tk.Tk()
root.withdraw()

from tkMessageBox import showinfo
showinfo('some caption', 'some info')

此实现的唯一问题是我的程序(不是用 Tkinter 编写的)将不会继续运行,直到按下 showinfo 消息框的“确定”按钮.也就是说,showinfo 对话框将被阻止。

因此我的问题是: 是否有一种简单的方法可以使 showinfo 成为非阻塞的? Tkinter 中是否有非阻塞的替代消息框实现?我可以想到显示帮助页面的典型用法 - 窗口应该打开并且主程序继续正常运行。

EDIT1:这是我想出的一个简单的帮助窗口,但不幸的是它没有显示,除非我启动一个不同的 tkMessageBox 或类似的对象:

class TextInfo(object):

def __init__(self, parent, window_title = 'window', textfield = 'a text field', label = None):

self.top = tk.Toplevel(parent)
self.parent = parent
self.window_title = window_title
self.textfield = textfield

# set window title
if window_title:
self.top.title(window_title)

# add label if given
if label:
tk.Label(self.top, text=window_title).grid(row=0)

# create the text field
self.textField = tk.Text(self.top, width=80, height=20, wrap=tk.NONE)
if textfield:
self.textField.insert(1.0, textfield)
self.textField.grid(row=1)

# create the ok button
b = tk.Button(self.top, text="OK", command=self.ok)
b.grid(row=2)

def ok(self):
self.top.destroy()

这就是我调用窗口的方式:

root = tk.Tk()
root.withdraw()
TextInfo(self.root, window_title, textfield, label)
# don't call root.mainloop() here, because this will lead to blocking.

是否需要设置某种属性或事件才能显示窗口?如果我调用 root.mainloop() 窗口会出现,但我的 GUI 会再次被阻止。

最佳答案

不要使用 tkMessageBox,因为它不允许太多配置。只需创建您自己的自定义对话框即可。这page谈论了很多关于创建自定义 Tkinter 对话框的内容。

关于python - Tkinter 中的非阻塞信息对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11418625/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com