【求教 探讨】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的人 可以给出宝贵意见。

多谢~ (欢迎交流)

原文地址:https://www.cnblogs.com/Restaurant/p/11691425.html

时间: 2024-10-17 14:52:54

【求教 探讨】python tkinter的messagebox的相关文章

Python Tkinter学习(三)

Python初学--窗口视窗Tkinter 1.1 什么是 Tkinter Python自带的可编辑的GUI界面,是一个图像窗口. Tkinter是使用 python 进行窗口视窗设计的模块.简单的构造,多平台,多系统的兼容性, 能让它成为让你快速入门定制窗口文件的好助手.它在 python 窗口视窗模块中是一款简单型的.所以用来入门,熟悉窗口视窗的使用,非常有必要. tkinter 的窗口部件 2.1 Label & Button 标签和按钮 窗口主体框架 每一个tkinter应用的主体框架都

Python tkinter 实现简单登陆注册 基于B/S三层体系结构,实现用户身份验证

Python tkinter 实现简单登陆注册 最终效果 开始界面 ? 注册 登陆 ? 源码 login.py # encoding=utf-8 from tkinter import * from tkinter import messagebox as tkMessageBox import mysql_connect as mys import pymysql import base64 #加密 将用户的密码加密后储存到数据库 def encryption(str): str=str.en

python+tkinter+pyautogui 自制截屏软件

目标:虽然类似QQ等软件带有截屏功能,但还是感觉自造的好 使用说明:将以下代码保存为如:截屏.pyw    并发送到 桌面快捷方式  然后修改快捷方式的属性 增加快捷键. 现在可以用快捷键启动脚本截屏了. 然而:win10自带的  “Win+Shift+S”组合键便可进入截屏模式 代码: #! /usr/bin/env python # -*- coding: utf-8 -*- import tkinter as tk import pyautogui root = tk.Tk() root.

python tkinter 文件MD5校验工具

使用Python 2.7.10 tkinter 进行编写的"文件md5校验工具".由于自己的水平问题,可能会存在一些错误,恳请大家指正,谢谢. 图形界面: 源码: #coding: UTF-8 #python tkinter 文件MD5校验 #环境 Python 2.7.10  import Tkinter as tk import hashlib import  os import tkFileDialog as tkf def view_md5():  #计算结果显示方法     

python Tkinter接受键盘输入并保存文件

最近想用python写个切换host的小工具,折腾了好几天,终于实现了第一步. 采用Tkinter编程,text控件接受输入,然后点击save按钮,保存内容到当前文件夹下,文件名为hostb,如下两张图片: 直接上代码: #支持中文 #!coding:gbk #导入需要的包from Tkinter import *import timeimport osimport sys; #reload sysreload(sys); #设置系统的默认编码为utf8sys.setdefaultencodin

Python Tkinter基础控件入门实例

分享一个Python Tkinter基础控件用法的入门例子,包括窗口的显示.显示内置图片.弹出窗口.菜单等. 例子,Python Tkinter基础控件的用法 # -*- coding: utf-8 -*- from Tkinter import * def btn_click(): b2['text'] = 'clicked' evalue = e.get() print 'btn Click and Entry value is %s' % evalue def btn_click_bind

python tkinter学习

Downloading the module: sudo apt-get install python-tk simple example: #!/usr/bin/python # -*- coding: utf-8 -*- """ ZetCode Tkinter tutorial This script shows a simple window on the screen. author: Jan Bodnar last modified: January 2011 we

Python Tkinter学习之计算器

初学Python tkinter,利用目前所学编写一个简单的计算器练习一下. 预期效果: 1.能够实现加减乘除运算, 2.只能输入数字 3.通过按钮选择进行哪种运算. 4.结果框不能修改,智能复制 5.按清除按钮能够清除所有内容 from  tkinter import * count = Tk() count.title("纯醪八盅@计算器") def clear():     v1.set("")     v2.set("")     v3.

Python弹出MessageBox

ctypes import ctypes ctypes.windll.user32.MessageBoxW(0, u'内容', u'标题',0) 通过ctypes直接调用windows的API. 这种方法的好处是不用安装第三方的库,自给自足. pywin32 import win32api,win32con win32api.MessageBox(0,u'内容', u'标题' ,win32con.MB_OK) win32api是对windows API的封装,用到的常量都封装在win32con里