我需要一个简单的信息框来显示一些状态输出,我可以使用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对话框的内容.

python中showinfo_python – Tkinter中的非阻塞信息对话框相关推荐

  1. python stdout.read()阻塞_通过阅读python subprocess源码尝试实现非阻塞读取stdout以及非阻塞wait...

    http://blog.chinaunix.net/uid-23504396-id-4661783.html 执行subprocess的时候,执行不是问题 最麻烦的是获取进程执行后的回显来确认是否正确 ...

  2. Java中如何使用非阻塞异步编程——CompletableFuture

    分享一波:程序员赚外快-必看的巅峰干货 对于Node开发者来说,非阻塞异步编程是他们引以为傲的地方.而在JDK8中,也引入了非阻塞异步编程的概念.所谓非阻塞异步编程,就是一种不需要等待返回结果的多线程 ...

  3. python label显示图片_python 实现在tkinter中动态显示label图片的方法

    在编程中我们往往会希望能够实现这样的操作:点击Button,选择了图片,然后在窗口中的Label处显示选到的图片.那么这时候就需要如下代码: from tkinter import * from tk ...

  4. JAVA 中IO总结 之前篇阻塞、非阻塞

    最近总结JAVA中的IO,遇到了有关阻塞.非阻塞.同步.异步的概念,之前也做个内核有关开发,今天温故而知新. Linux支持同步IO,也支持异步IO,因此分为同步阻塞.同步非阻塞,异步阻塞,异步非阻塞 ...

  5. Linux C/C++网络编程实战-陈硕-笔记20-使用非阻塞IO

    基于IO复用(非阻塞IO)实现的 netcat 使用非阻塞IO可以有效避免上述情况的发生.但非阻塞IO在编程上要比阻塞IO更难,并且在程序的维护上比较痛苦.一般使用非阻塞IO编程时建议使用一些封装好的 ...

  6. Linux下同步模式、异步模式、阻塞调用、非阻塞调用总结

    同步和异步:与消息的通知机制有关. 本质区别 现实例子 同步模式 由处理消息者自己去等待消息是否被触发 我去银行办理业务,选择排队等,排到头了就办理. 异步模式 由触发机制来通知处理消息者 我去银行办 ...

  7. struct用法_精讲响应式webclient第1篇-响应式非阻塞IO与基础用法

    笔者在之前已经写了一系列的关于RestTemplate的文章,如下: 精讲RestTemplate第1篇-在Spring或非Spring环境下如何使用 精讲RestTemplate第2篇-多种底层HT ...

  8. stm32 hal uart_STM32 非阻塞HAL_UART_Receive_IT解析与实际应用

    本文章主要探讨如何使用STM32中HAL库的UART_Receive_IT非阻塞接收数据.其他网络教程(包括正点原点相关教程)可能个人原因无法完全理解,苦苦挣扎后才完成非阻塞UART接收. 希望可以通 ...

  9. php协程实现mysql异步_swoole与php协程实现异步非阻塞IO开发

    "协程可以在遇到阻塞的时候中断主动让渡资源,调度程序选择其他的协程运行.从而实现非阻塞IO" 然而php是不支持原生协程的,遇到阻塞时如不交由异步进程来执行是没有任何意义的,代码还 ...

最新文章

  1. 【linux】printf在终端打印彩色hello world
  2. linux 内核 出错-HP 方案
  3. python爬虫教程下载-Python爬虫视频教程全集下载
  4. 【深度学习】CUDA 和 TensorRT 博客搜集
  5. (转)使用json-lib 数据格式转换
  6. [2021-09-09 T2] 就差⼀点——冒泡排序和反序表之间不为人知的秘密
  7. MATLAB中simulink的模糊PID控制
  8. html 样式 tab键 空格,设置Visual Studio2013的TAB键为4个空格
  9. window7 安装grldr
  10. Python字符串| min()
  11. 2020计算机考研英语国家线,2020考研英语国家分数线?
  12. a simplest example of sql select used in excel vba
  13. Python-TypeError:takes no arguments
  14. python中字符串如何新增元素_python向字符串中添加元素的实例方法
  15. 将QTextEdit右键菜单设置为中文
  16. 怎么用U盘制作原版系统启动盘
  17. nmap 安装和使用
  18. 【转】2007最牛X网站收集,有些网站蛮有意思
  19. 在H5页面中使用Google Analytics
  20. 区块链学习笔记21——ETH智能合约

热门文章

  1. 教你如何用手机查看哪些人在蹭你家的WIFI,然后将他们屏蔽!
  2. 存储管理之页式、段式、段页式存储
  3. android studio 导入第三方库的记录
  4. CSharpGL(23)用ComputeShader实现一个简单的ParticleSimulator
  5. 点击模型:达观数据提升算法精度的利器
  6. 让人期待的2011年度最佳 jQuery 插件发布啦
  7. CSS各种选择符的优先级
  8. python切割时间数据_按小时Python分割时间
  9. java scanner类int_Java之 Scanner类
  10. ext js ajax表单校验,Extjs之grid单元格编辑校验(示例代码)