十行代码用PythonStudio快速创建一个可移动的隐形时钟

(本文在PythonStudio作者 彭云枫老师的指导下对窗体关闭进行了修改)

思路

领导说要一个可以在桌面上任意位置的时钟,而且不能有底色,于是这样想:
1、窗体为无边框
2、在窗体中加PANEL,并将Panel的颜色设置为透明色
3、用定时器定时刷新Label
4、由于没有关闭按钮,就在windows系统托盘中加入图标,右键点击后,进行关闭
5、可以拖动
pythonestudio写完,发现只用了十行代码

做完后,可以在任意位置显示如下时间
在这里插入图片描述

界面设计

在窗口中加入TPanel、TLabel、TTimer、TTrayIcon、TPopupMenu(如果想直接点图标就关闭,也可以不加这个菜单)

在这里插入图片描述

设置Form1

  • BorderStyle:bsNone
  • Ctl3D:False
  • Height:170
  • Width:420
  • TransparentColor:True
  • TransparentColorValue:clWhite

设置Panel1

  • Align:alClient
  • BevelOter:bvNone
  • Caption:(空)
  • Color:clWhite

设置Label1

  • Align:alClient
  • Caption:(空)
  • Alignment:taCenter
  • Font-Size:70
  • Font-Name:Russo One(或其他喜欢的字体)

设置Timer1

(全部默认)

设置PopupMenu1

  • 双击PopupMenu1,在菜单编辑器中加入新的条目,并改为“关闭时钟”
    在这里插入图片描述

设置TrayIcon

  • Visible:True
  • PopupMenu:PopupMenu1

代码

引入日期

在Unit1.py最开始加入:

from datetime import *

定时写入时间

双击定时器

    def Timer1Timer(self, Sender):
        self.Label1.Caption=datetime.now().strftime("%T")

进入界面后就启动定时器

在初始化代码中加入

    def __init__(self, owner):
   		……
        # 启动定时器
        self.Timer1.Enabled=True

允许拖动

目前lable控件暂无拖动事件,所以采取对label的鼠标按下和抬起事件来完成
在初始化代码中加入

   def __init__(self, owner):
	   	……
        self.position_x=0
        self.position_y=0

在label的onMouseDown和onMouseUp事件中加入

    def Label1MouseDown(self, Sender, Button, Shift, X, Y):
        # 取得当前位置
        self.position_x=X
        self.position_y=Y

    def Label1MouseUp(self, Sender, Button, Shift, X, Y):
        # 将窗口移到新的位置
        self.Left=self.Left+(X-self.position_x)
        self.Top=self.Top+(Y-self.position_y)

“关闭时钟”菜单的代码

双击MenuItem1,加入让窗口关闭的“self.Close()”

    def MenuItem1Click(self, Sender):
        self.Close()

效果如下图:
在这里插入图片描述

完整代码

import os
from glcl import *
from datetime import *   # 手工加入第1行
class Form1(Form):

    def __init__(self, owner):
        self.Timer1 = Timer(self)
        self.Label1 = Label(self)
        self.Panel1 = Panel(self)
        self.LoadProps(os.path.join(os.path.dirname(os.path.abspath(__file__)), "Unit1.pydfm"))
        self.Label1.OnDblClick = self.Label1DblClick
        self.Label1.OnMouseUp = self.Label1MouseUp
        self.Label1.OnMouseDown = self.Label1MouseDown
        self.Timer1.OnTimer = self.Timer1Timer
        # 启动定时器
        self.Timer1.Enabled=True  # 手工加入第2行
        # 窗体位置调整
        self.position_x=0  # 手工加入第3行
        self.position_y=0  # 手工加入第4行

    def Timer1Timer(self, Sender):
        # 显示当前时间
        self.Label1.Caption=datetime.now().strftime("%T")  # 手工加入第5行

    def Label1MouseDown(self, Sender, Button, Shift, X, Y): 
        # 取得当前位置
        self.position_x=X   # 手工加入第6行
        self.position_y=Y  # 手工加入第7行

    def Label1MouseUp(self, Sender, Button, Shift, X, Y):
        # 将窗口移到新的位置
        self.Left=self.Left+(X-self.position_x) # 手工加入第8行
        self.Top=self.Top+(Y-self.position_y) # 手工加入第9行

    def MenuItem1Click(self, Sender):
        self.Close() # 手工加入第10行

如果还需要可以调整大小等,可以再增加其他代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值