【求教 探讨】python tkinter的messagebox
最近有一个要求,用python的tkinter制作一个messagebox,传入3个参数: title text timeout。用户可以点击“确定” 关闭窗口; 或者 等待几秒(timeout) 窗口自动关闭;

一开始 我选择tkinter原生的messagebox,代码如下:
from tkinter import messagebox, Tk
root = Tk()
root.withdraw()
root.wm_attributes('-topmost', 1) messagebox.showinfo(title, text)
但原生的messagebox不支持timeout。。。 只能放弃。(如果有谁知道解决办法,请评论~ 多谢。。。)
所以 我自己写了个窗口,代码也很简单。 但还是没实现timeout功能··· (哭泣,求助)
# -*- coding:utf-8 -*-
import tkinter as tk # 导入tkinter模块
import time
import threading
import re def center_window(root, width, height): # 窗口居中
screenwidth = root.winfo_screenwidth()
screenheight = root.winfo_screenheight()
size = '%dx%d+%d+%d' % (width, height, (screenwidth - width)/2, (screenheight - height)/2)
root.geometry(size) def msg_box(title="Info", text="text", width=330, height=100):
window = tk.Tk() # 主窗口
window["bg"] = "white"
window.wm_attributes('-topmost', 1) # 窗口置顶
window.title(title) # 窗口标题
center_window(window, width=width, height=height) # 窗口 置于屏幕中央
#text = re.sub(r"(.{20})", "\\1\n", text)
l = tk.Label(window, text=text, width=40, height=3, font=('Arial', 12), bg="white", relief="flat")
l.pack()
b = tk.Button(window, text='退出', command=window.quit, width=5, relief="groove", bg="white")
b.pack(side='bottom', anchor="s")
def auto_close():
for i in range(30):
time.sleep(1)
print(i)
window.destroy()
t = threading.Thread(target=auto_close, daemon=True)
t.start()
# def fun_timer():
# global timer
# window.destroy()
# timer.cancel()
# timer = threading.Timer(15, fun_timer)
# timer.start()
window.mainloop() # 循环消息,让窗口活跃 if __name__ == '__main__':
# text = ""
# text = "1"
# text = "12345"
# text = "123456789"
# text = "你好"
# text = "这是五个字"
text = "落霞与孤鹭齐飞,秋水共长天一色"
# text = "123456789abcdefghijklmn" for i in "abc":
time.sleep(1)
print(i) msg_box(text=text) for i in "正在等待最终结果":
time.sleep(1)
print(i)
如果感兴趣,大家可以运行这段代码,就知道存在什么问题了。。。
也希望 如果有对GUI编程懂得人或是了解tkinter的人 可以给出宝贵意见。
多谢~ (欢迎交流)
【求教 探讨】python tkinter的messagebox的更多相关文章
- Python Tkinter 学习成果:点歌软件music
笔者工作业余时间也没什么爱好,社交圈子也小,主要娱乐就是背着自己带电瓶的卖唱音响到住地附近找个人多的位置唱唱KtV. 硬件上点歌就用笔记本电脑,歌曲都是网上下载的mkv格式的含有两个音轨的视频.因此点 ...
- python -Tkinter 实现一个小计算器功能
文章来源:http://www.cnblogs.com/Skyyj/p/6618739.html 本代码是基于python 2.7的 如果是对于python3.X 则需要将 tkinter 改为Tk ...
- python Tkinter之Button
Button小部件是一个标准的Tkinter的部件,用于实现各种按钮.按钮可以包含文本或图像,您可以调用Python函数或方法用于每个按钮. Tkinter的按钮被按下时,会自动调用该函数或方法. 该 ...
- python gui tkinter快速入门教程 | python tkinter tutorial
本文首发于个人博客https://kezunlin.me/post/d5c57f56/,欢迎阅读最新内容! python tkinter tutorial Guide main ui messageb ...
- Python tkinter 实现简单登陆注册 基于B/S三层体系结构,实现用户身份验证
Python tkinter 实现简单登陆注册 最终效果 开始界面 注册 登陆 源码 login.py # encoding=utf-8 from tkinter import * from ...
- python tkinter实现俄罗斯方块 基础版
本项目最终效果见本人b站投稿av81480858 简介部分 本项目最终代码已上传github: https://github.com/BigShuang/Tetris 的1_BASIC文件夹 .其中1 ...
- Python Tkinter基础控件入门实例
分享一个Python Tkinter基础控件用法的入门例子,包括窗口的显示.显示内置图片.弹出窗口.菜单等. 例子,Python Tkinter基础控件的用法 # -*- coding: utf-8 ...
- Python Tkinter Entry(文本框)
Python学习记录--关于Tkinter Entry(文本框)的选项.方法说明,以及一些示例. 属性(Options) background(bg) borderwidth(bd) cursor e ...
- python tkinter Listbox用法
python tkinter组件的Listbox的用法,见下面代码的演示: from tkinter import * root=Tk() v=StringVar() #Listbox与变量绑定' l ...
随机推荐
- 理解TCP三次握手和四次挥手
TCP相关知识 TCP是面向连接的传输层协议,它提供可靠交付的.全双工的.面向字节流的点对点服务.HTTP协议便是基于TCP协议实现的.(虽然作为应用层协议,HTTP协议并没有明确要求必须使用TCP协 ...
- [Shell] 分隔字符串为数组
#!/bin/bash tmp="test,girl,boy,love" OLD_IFS="$IFS" IFS="," arr=($a) I ...
- maxwell的数据引导方式
INSERT INTO maxwell.bootstrap (database_name, table_name,where_clause) VALUES (--''); INSERT INTO ma ...
- Linux设备驱动程序 之 并发及其管理
竞态产生 Linux系统找那个存在大量的并发联系,因此会导致可能的竞态: 1. 正在运行的用户空间进程可以以多种组合方式访问我们的代码: 2. SMP系统甚至可以再不同的处理器上同时执行我们的代码: ...
- Python中二维数组的创建
习惯了java的Matrix = [][]不知道python怎么创二维数组. 先看 python中的二维数组操作 对最后提出的二维数组创建方式存在疑问 Matrix = [([0] * 3) for ...
- koa 允许跨域
1.安装模块 npm install koa2-cors --save 2.引用 const cors = require('koa2-cors'); ... // 允许跨域访问 app.use(co ...
- Css设置字体
另,考虑到文件编码问题,在css中推荐使用中文字体的英文表示法,以下附常见中文字体的英文名:Mac OS的一些:Georgia 数字高低起伏Comic Sans MS 好看的英文字体华文细黑:STH ...
- instanceof 实现
A instanceof B // 实现 instanceof function instance(a, b) { const proto = a.__proto__; // eslint-disab ...
- Google Protocol Buffers 快速入门(带生成C#源码的方法)
Google Protocol Buffers是google出品的一个协议生成工具,特点就是跨平台,效率高,速度快,对我们自己的程序定义和使用私有协议很有帮助. Protocol Buffers入门: ...
- ubuntu---ssh连接
17.04版本或其他版本: 1.第一步是.(这个必须先安装) apt-get install openssh-server 2.第二步: 当在这段输入ifconfig提示安装.再最后安装这个. 终端会 ...