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

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

import Tkinter as tk

root = tk.Tk()

root.withdraw()

from tkMessageBox import showinfo

showinfo('some caption', 'some info')

这个实现的唯一问题是我的程序(不是在Tkinter中编写)将不会继续运行,直到按下showinfo消息框的’ok’按钮.也就是说,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对话框的内容.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值