wxpython: 数字时钟秒表

news2025/2/26 7:13:20

wxpython 数字时钟秒表;定时器和线程=>示例

编写 wx_clock.py 如下

# -*- coding: utf-8 -*-
""" 定时器和线程=>示例"""
import wx
import time
import threading

class MyFrame(wx.Frame):   

    def __init__(self):
        """构造函数"""        
        wx.Frame.__init__(self, parent=None, 
                    style=wx.CAPTION|wx.SYSTEM_MENU|wx.CLOSE_BOX|wx.MINIMIZE_BOX|wx.SIMPLE_BORDER)
        
        self.SetTitle('数字时钟秒表')
        #self.SetIcon(wx.Icon('res/wx.ico', wx.BITMAP_TYPE_ICO))
        self.SetBackgroundColour((224, 224, 224))
        self.SetSize((320, 300))
        
        self._init_ui()
        self.Center()
    
    def _init_ui(self):
        """初始化界面"""        
        font = wx.Font(30, wx.DECORATIVE, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, 'Song')
        
        self.clock = wx.StaticText(self, -1, '08:00:00', pos=(50,30), size=(200,50), 
                                    style=wx.TE_CENTER|wx.SUNKEN_BORDER)
        self.clock.SetForegroundColour(wx.Colour(0, 224, 32))
        self.clock.SetBackgroundColour(wx.Colour(0, 0, 0))
        self.clock.SetFont(font)
        
        self.handwatch = wx.StaticText(self, -1, '0:00:00.00', pos=(50,120), size=(200,50), 
                                        style=wx.TE_CENTER|wx.SUNKEN_BORDER)
        self.handwatch.SetForegroundColour(wx.Colour(0, 224, 32))
        self.handwatch.SetBackgroundColour(wx.Colour(0, 0, 0))
        self.handwatch.SetFont(font)
        
        self.label = wx.StaticText(self, -1, '按空格键启停,按Esc键清零', 
                            pos=(50,220), size=(200,50), style=wx.TE_CENTER|wx.SUNKEN_BORDER)
        
        self.timer = wx.Timer(self)
        self.Bind(wx.EVT_TIMER, self.on_timer, self.timer)
        self.timer.Start(50)
        
        self.Bind(wx.EVT_KEY_DOWN, self.on_key_down)
        
        self.sec_last = None
        self.is_start = False
        self.t_start = None
        
        thread_sw = threading.Thread(target=self.WatchThread)
        thread_sw.setDaemon(True)
        thread_sw.start()
        
    def on_timer(self, evt):
        """定时器函数"""
        t = time.localtime()
        if t.tm_sec != self.sec_last:
            self.clock.SetLabel('%02d:%02d:%02d'%(t.tm_hour, t.tm_min, t.tm_sec))
            self.sec_last = t.tm_sec
        
    def on_key_down(self, evt):
        """键盘事件函数"""       
        if evt.GetKeyCode() == wx.WXK_SPACE:
            self.is_start = not self.is_start
            self.t_start= time.time()
        elif evt.GetKeyCode() == wx.WXK_ESCAPE:
            self.is_start = False
            self.handwatch.SetLabel('0:00:00.00')
        
    def WatchThread(self):
        """线程函数"""        
        while True:
            if self.is_start:
                t = time.time() - self.t_start
                ti = int(t)
                wx.CallAfter(self.handwatch.SetLabel, 
                        '%d:%02d:%02d.%.02d'%(ti//3600, ti//60, ti%60, int((t-ti)*100)))
            time.sleep(0.02)

if __name__ == '__main__':
    app = wx.App()
    frame = MyFrame()
    frame.Show(True)
    app.MainLoop()

运行 python wx_clock.py

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/966577.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Java核心知识】线程基础知识

文章目录 线程线程与进程的区别创建线程的方法方法一:继承Thread类方法二:实现Runnable接口方法三:使用Callable和FutureTask创建带返回值的线程方法四:通过线程池创建线程 线程的基本操作线程的状态守护线程 线程 线程与进程的区…

基于Java的学生宿舍管理系统,springboot+jsp,MySQL数据库,前后端分离,学生+宿舍管理员+系统管理员三种身份,完美运行,有一万字论文。

基于Java的学生宿舍管理系统,springbootjsp,MySQL数据库,前后端分离,学生宿舍管理员系统管理员三种身份,完美运行,有一万字论文。 学生:个人信息管理、保修、假期(入校、离校&#x…

【网络】路由配置实践

网络实践-路由篇 本文使用vmware虚拟机进行路由表配置实践,通过配置路由表连接两个不同的网络 网络规划: 准备三台centos7虚拟机,其中一台作为路由设备router,其余两台分别代表处在不通网络中的pc1和pc2。因此router虚拟机需要分…

IntelliJ IDEA的远程开发(Remote Development)

DEA的远程开发功能,可以将本地的编译、构建、调试、运行等工作都放在远程服务器上执行,而本地仅运行客户端软件进行常规的开发操作即可,官方给出的逻辑图如下,可见通过本地的IDE和服务器上的IDE backend将本地电脑和服务器打通&am…

iOS设备管理软件iMazing2024

文件系统是一种用于在存储设备上组织文件和文件夹的系统。所有的存储设备(如计算机、USB存储器、手机等)都有着自己的文件系统。 iMazing文件系统功能将iOS设备中封闭而复杂的文件管理系统整合在一起,让您管理文件像在电脑中使用Windows文件…

肖sir __linux__面试题和考核05

面试题 1、查看linux中第11行到第20行的数据(比如文档a 有30行) 方法1:tail -n 11 mm |head -n10 n 表示从第10行开始,取前10行 方法2:head -n -10 mm| tail -n 10 表示从末尾第10行开始,最后10行 方法3&am…

ThreadLocal原理剖析

一.ThreadLocal的含义 ThreadLocal也就是线程本地变量,创建了一个ThreadLocal变量,访问这个变量的每个线程都会有这个变量的一个本地拷贝,多个线程操作这个变量的时候,实际上是操作自己本地内存里面的变量,从而起到线…

基于单片机的简易智能电动车设计

一、项目介绍 智能交通工具在现代社会中起着越来越重要的作用,电动车作为一种环保、便捷的交通工具,受到了广泛的关注和应用。本设计基于单片机技术,设计一款简易智能电动车,实现基本的控制和功能,并提供良好的用户体…

kubectl入门

一.kubectl的三种资源管理方式: 二. kubectl资源介绍: 1.namespace:实现多套环境的资源隔离或者多租户的资源隔离。k8s中的pod默认可以相互访问,如果不想让两个pod之间相互访问,就将其划分到不同ns下。 2.pod&#x…

搭建Python开发环境

开发环境 Python是一种跨平台 的编程语言,这意味着它能够在所有的主流操作系统中运行,开发者可以Windows、Linux、Mac中开发和学习Python,甚至在Android手机中也可以运行Python代码。 在所有安装了Pythonr现代计算机上,都能够运…

华为OD:敏感字段加密

题目描述: 给定一个由多个命令字组成的命令字符串: 1、字符串长度小于等于127字节,只包含大小写字母,数字,下划线和偶数个双引号; 2、命令字之间以一个或多个下划线_进行分割; 3、可以通过两个双引号”"来标识包含下划线…

自定义创建项目

基于VueCli自定义创建项目 1.Eslint代码规范 代码规范:一套写代码的约定规则。 比如 赋值符号的左右是否需要空格 一句话结束是否要加; 正规的团队 需要统一的编码风格 https://standardjs.com/rules-zhcn.html 规则查找 https://zh-hans.eslint.org/docs/late…

CESM2代码下载

这半年忙着毕业写论文,好久好久好久不更新了∠( ω)/ ,今天准备开个新坑 ๑乛◡乛๑,学习一下CESM(Community Earth System Model),它是一个完全耦合的全球气候模型,可用于地球过去、…

千纸鹤APP云验证系统源码 APK注入引流弹窗

千纸鹤APP云验证系统是一款全面的验证系统,包括网络验证、APK注入、注册机、引流弹窗、更新弹窗等功能。该系统提供完整的源代码,方便开发者二次开发和定制化需求。 可以对用户进行多种验证,包括账号密码验证、短信验证码验证等。该系统还提供…

jmeter 常数吞吐量定时器

模拟固定吞吐量的定时器。它可以控制测试计划中各个请求之间的时间间隔,以达到预期的吞吐量。 参数包括: Target Throughput:目标吞吐量(每分钟请求数)Calculate Throughput based on:吞吐量计算基准&…

机器人中的数值优化(七)——修正阻尼牛顿法

本系列文章主要是我在学习《数值优化》过程中的一些笔记和相关思考,主要的学习资料是深蓝学院的课程《机器人中的数值优化》和高立编著的《数值最优化方法》等,本系列文章篇数较多,不定期更新,上半部分介绍无约束优化,…

2023开学礼《乡村振兴战略下传统村落文化旅游设计》许少辉八一新书南京师范大学图书馆

2023开学礼《乡村振兴战略下传统村落文化旅游设计》许少辉八一新书南京师范大学图书馆

程序员工作技巧

提高工作技巧的秘方 案例 让我们猜测一下 绵羊想表达的什么? 并不够准确 崩了,不能用了整个业务瘫痪了研发没有责任感 语义规则/模棱俩可 相对语言 量化数据表达:疼苦指数,拥堵指数,准确。 尽量减少标签化评价 标签…

iPhone 隔空投送使用指南:详细教程

本文介绍了如何在iPhone上使用隔空投送,包括如何在iOS 11到iOS 14的iPhone上启用它、发送文件以及接受或拒绝AirDrop发送给你的文件。对于iOS 7以上的旧款iPhone,提供了另一种方法。 如何打开隔空投送 你可以通过以下两种方式之一启动隔空投送功能:在“设置”应用程序或控…