wxPython 中带有自动关闭计时器的 wxMessageBox

2024-01-28

平台:Windows、OS X

Python版本:活动状态Python 2.7

wxPython版本:2.9版


如果您通过子类化创建自己的自定义对话框wx.Dialog http://www.wxpython.org/docs/api/wx.Dialog-class.html你可以使用wx.Timer http://www.wxpython.org/docs/api/wx.Timer-class.html生成一个周期性事件,您可以绑定一个处理程序,该处理程序在每次计时器事件触发时更新消息,然后在 x 事件触发后您可以销毁对话框。

工作示例:

import wx
import os

class MessageDialog(wx.Dialog):
    def __init__(self, message, title, ttl=10):
        wx.Dialog.__init__(self, None, -1, title,size=(400, 150))
        self.CenterOnScreen(wx.BOTH)
        self.timeToLive = ttl

        stdBtnSizer = self.CreateStdDialogButtonSizer(wx.OK|wx.CANCEL) 
        stMsg = wx.StaticText(self, -1, message)
        self.stTTLmsg = wx.StaticText(self, -1, 'Closing this dialog box in %ds...'%self.timeToLive)

        vbox = wx.BoxSizer(wx.VERTICAL)
        vbox.Add(stMsg, 1, wx.ALIGN_CENTER|wx.TOP, 10)
        vbox.Add(self.stTTLmsg,1, wx.ALIGN_CENTER|wx.TOP, 10)
        vbox.Add(stdBtnSizer,1, wx.ALIGN_CENTER|wx.TOP, 10)
        self.SetSizer(vbox)

        self.timer = wx.Timer(self)
        self.timer.Start(1000)#Generate a timer event every second
        self.timeToLive = 10 
        self.Bind(wx.EVT_TIMER, self.onTimer, self.timer)

    def onTimer(self, evt):
        self.timeToLive -= 1
        self.stTTLmsg.SetLabel('Closing this dialog box in %ds...'%self.timeToLive)

        if self.timeToLive == 0:
            self.timer.Stop()
            self.Destroy()

class Frame(wx.Frame):
    def __init__(self, parent, id, title):
        wx.Frame.__init__(self, parent, id, title, size=(100, 100),style=wx.MINIMIZE_BOX | wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX | wx.CLIP_CHILDREN)

        host=os.system('hostname')
        if host!='superman':
            dlg = MessageDialog('The host name should be superman', 'Info', ttl=10)               
            dlg.ShowModal()
        else:
            self.Center()
            self.Show()

if __name__ == "__main__":
    app = wx.PySimpleApp()
    frame = Frame(None, -1, "") 
    frame.Show(1)
    app.MainLoop()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

wxPython 中带有自动关闭计时器的 wxMessageBox 的相关文章

随机推荐

  • 多个触发器对一个表具有相同的操作时间和事件mysql错误

    我是触发器新手 并且收到 一张表的多个触发器具有相同的操作时间和事件 错误 我创建了一个更新后和删除后 这是两个单独的操作时间 事件 所以我不太确定为什么会收到错误 这是我的查询 CREATE TRIGGER new enrolment A
  • Caret 包 - 定义积极结果

    在使用 Caret 包进行机器学习时 我对 Caret 的默认 正 结果选择感到震惊 即二元分类问题中结果因素的第一级 软件包说它可以设置为替代级别 任何机构可以帮助我定义积极的结果吗 感谢您 看看这个例子 使用混淆矩阵从插入符号示例中扩展
  • 在 Rstudio 的查看器中显示 Rd 文件

    我在项目文件夹中有函数和数据集的文档 在文档文件夹中 我有所有数据集的 Rd 文件 我希望用户能够调用自定义帮助函数并在查看器中启动 Rd 文件 就像从文件编辑器编译文件时自动完成的那样 是否有可能做到这一点 我不太明白你为什么要这样做 但
  • MagicalRecord:多个数据库

    我有一个使用 MagicalRecord 的应用程序 并且我正在使用大量用于参考的数据预先填充数据库 在同一数据模型中 我拥有与用户在应用程序中可能执行的操作相关的用户可定义信息 该应用程序被拒绝 因为预填充的数据应该被标记为 不备份 因此
  • 异常情况下自动回滚有什么缺点?

    当您编写 Flask sqlalchemy 应用程序并进行数据库查询 异常处理时 如下所示 def add user user User gt bool was the user added errors try db session ad
  • 塑料单片机。这是正确的解决方案吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我知道已经有一些关于塑料 SCM 的问题 但它们已经存在一年多了 最近有人用过Plastic SCM吗 你怎么看待这件事 我已经使用过 git
  • pandas:如何绘制 pandas 中 IMDB 电影的电影数量与类型的饼图?

    我有以下数据集 import pandas as pd import numpy as np matplotlib inline df pd DataFrame movie A B C D genres Science Fiction Ro
  • 存在同名数据库,或无法打开指定文件,或位于 UNC 共享上

    当我在新电脑上运行我的项目时出现此错误 为了避免这种情况 我每次都必须复制粘贴新的连接字符串 有什么办法可以避免这种情况 我有3个不同的数据库 它非常烦人的O O SqlConnection con new SqlConnection Da
  • 复合键作为外键(sql)

    这是我关心的两个表 CREATE TABLE IF NOT EXISTS tutorial beggingTime time NOT NULL day varchar 8 NOT NULL tutorId int 3 NOT NULL ma
  • gulp:gulp任务回调函数在哪里定义的?

    gulp 中的任务可以这样定义 gulp task foobar function callback 我想了解回调函数是什么 它在哪里定义的 我可以在运行时传入其他函数作为参数吗 它有什么作用 这些文档 https github com g
  • 如何在 WPF 弹出窗口中放置关闭 [x]

    我已经在 c 和 wpf 中使用此代码成功创建了一个弹出窗口
  • 为什么我的 Twitter Bootstrap 表单字段使用流体容器会溢出?

    更新 问题演示在这里 http jsfiddle net fdB5Q embedded result http jsfiddle net fdB5Q embedded result 从大约 767 像素到 998 像素 表单字段比包含井更宽
  • 如何隐藏 TieredCompilation 警告?

    我正在使用 Linux Mint 和 OpenJDK java version显示这个 java version 1 7 0 79 OpenJDK Runtime Environment IcedTea 2 5 6 7u79 2 5 6 0
  • 为什么 bash 按字典顺序而不是数字来评估数字比较?

    有人可以解释一下 if 重击块 我使用下面的简单代码检查是否第一个值小于第二个值 first value 67 second value 2 if first value lt second value then echo Yes else
  • WiX .NET Bootstrapper - 功能选择

    我们正在尝试获取自定义 NET Bootstrapper 以便通过我们的 WiX 安装程序有选择地安装 MSI 包中的功能 注册了 PlanMsiFeature 事件后 我们认为我们将能够访问 MSI 中的功能并根据预设条件排除某些功能 然
  • d3.js 受形状约束的力定向布局

    我想知道是否有一种方法可以使用 d3 js 创建强制导向布局并通过任意形状限制它 这样 所有节点均等分布within形状和 边界和节点之间的距离等于节点之间的距离 我希望已经有这样的解决方案 否则 我的想法是从力导向布局开始 并在每次迭代中
  • 在 Sequelize 中按日期范围查询列字段

    我正在尝试使用 Sequelize 查询数据库以获取在特定日期范围内创建的项目 我用的是 between运营商 但我似乎没有得到任何东西 where createdAt between 2018 03 31T21 00 00 000Z 20
  • Gitcherry-pick 会发生合并冲突

    目前我有两个分支 master beta 001 beta 001 之前有时会从 master 处检出 为了使 beta 001 更新到 master 在 master 中推送的提交也将被挑选到 beta 001 一切都运行良好 直到 be
  • 从一个视图切换到下一个视图

    我有一个带有两个视图和视图控制器的应用程序 如何让用户从一个视图切换到下一个视图 例如在主屏幕或天气应用程序中 我知道界面生成器中有一个页面控件 但它只是用户所在页面的指示器 感谢并抱歉我的英语不好 查看 Apple 的 iPhone 示例
  • wxPython 中带有自动关闭计时器的 wxMessageBox

    平台 Windows OS X Python版本 活动状态Python 2 7 wxPython版本 2 9版 如果您通过子类化创建自己的自定义对话框wx Dialog http www wxpython org docs api wx D