Python:PyQt 系统托盘

import sys
#从PyQt库导入QtWidget通用窗口类,基本的窗口集在PyQt5.QtWidgets模块里.
from PyQt5.QtWidgets import QApplication, QWidget,QSystemTrayIcon,QAction,QMenu,qApp,QMessageBox
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import QCoreApplication
 
if __name__ == '__main__':
    # pyqt窗口必须在QApplication方法中使用 
    # 每一个PyQt5应用都必须创建一个应用对象.sys.argv参数是来自命令行的参数列表.Python脚本可以从shell里运行.这是我们如何控制我们的脚本运行的一种方法.
    app = QApplication(sys.argv)
    # 关闭所有窗口,也不关闭应用程序
    QApplication.setQuitOnLastWindowClosed(False)
    from PyQt5 import QtWidgets
 
    # QWidget窗口是PyQt5中所有用户界口对象的基本类.我们使用了QWidget默认的构造器.默认的构造器没有父类.一个没有父类的窗口被称为一个window.
    w = QWidget()
    # resize()方法调整了窗口的大小.被调整为250像素宽和250像素高.
    w.resize(250,250)
    # move()方法移动了窗口到屏幕坐标x=300, y=300的位置.
    w.move(300,300)
    # 在这里我们设置了窗口的标题.标题会被显示在标题栏上.
    w.setWindowTitle('Simple')
    # show()方法将窗口显示在屏幕上.一个窗口是先在内存中被创建,然后显示在屏幕上的.
    w.show()
 
    # from PyQt5.QtWidgets import QSystemTrayIcon
    # from PyQt5.QtGui import QIcon
    # 在系统托盘处显示图标
    tp = QSystemTrayIcon(w)
    tp.setIcon(QIcon('d:/img/png/star.png'))
    # 设置系统托盘图标的菜单
    a1 = QAction('&显示(Show)',triggered = w.show)
 
    def quitApp():
        w.show() # w.hide() #隐藏
        re = QMessageBox.question(w, "提示", "退出系统", QMessageBox.Yes |   
            QMessageBox.No, QMessageBox.No)
        if re == QMessageBox.Yes:
            # 关闭窗体程序
            QCoreApplication.instance().quit()
            # 在应用程序全部关闭后,TrayIcon其实还不会自动消失,
            # 直到你的鼠标移动到上面去后,才会消失,
            # 这是个问题,(如同你terminate一些带TrayIcon的应用程序时出现的状况),
            # 这种问题的解决我是通过在程序退出前将其setVisible(False)来完成的。 
            tp.setVisible(False)
    a2 = QAction('&退出(Exit)',triggered = quitApp) # 直接退出可以用qApp.quit
 
    tpMenu = QMenu()
    tpMenu.addAction(a1)
    tpMenu.addAction(a2)
    tp.setContextMenu(tpMenu)
    # 不调用show不会显示系统托盘
    tp.show()
   
    # 信息提示
    # 参数1:标题
    # 参数2:内容
    # 参数3:图标(0没有图标 1信息图标 2警告图标 3错误图标),0还是有一个小图标
    tp.showMessage('tp','tpContent',icon=0)
    def message():
        print("弹出的信息被点击了")
    tp.messageClicked.connect(message)
 
    def act(reason):
        # 鼠标点击icon传递的信号会带有一个整形的值,1是表示单击右键,2是双击,3是单击左键,4是用鼠标中键点击
        if reason == 2 or reason == 3:
            w.show()
        # print("系统托盘的图标被点击了")
    tp.activated.connect(act)
    
    # sys为了调用sys.exit(0)退出程序
    # 最后,我们进入应用的主循环.事件处理从这里开始.主循环从窗口系统接收事件,分派它们到应用窗口.如果我们调用了exit()方法或者主窗口被销毁,则主循环结束.sys.exit()方法确保一个完整的退出.环境变量会被通知应用是如何结束的.
    # exec_()方法是有一个下划线的.这是因为exec在Python中是关键字.因此,用exec_()代替.
    sys.exit(app.exec_())

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PyQt5中调用系统时间可以通过使用QTimer和QDateTime来实现。首先,你需要创建一个定时器对象,并设置定时器的时间间隔。然后,你可以连接定时器的timeout信号到一个槽函数,该槽函数用于获取当前时间并在界面上显示。最后,启动定时器。 以下是一个示例代码,展示了如何在PyQt5中调用系统时间: ```python from PyQt5.QtCore import QTimer, QDateTime from PyQt5.QtWidgets import QLabel class MyWidget(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): self.timer = QTimer() # 创建定时器对象 self.timeLabel = QLabel() # 创建用于显示时间的标签 self.statusbar.addPermanentWidget(self.timeLabel, 0) # 将标签添加到状态栏 self.timer.timeout.connect(lambda: self.showCurrentTime(self.timeLabel)) # 将定时器的timeout信号连接到槽函数 self.timer.start(1000) # 启动定时器,每隔一秒触发一次timeout信号 def showCurrentTime(self, timeLabel): time = QDateTime.currentDateTime() # 获取系统当前时间 timeDisplay = time.toString('yyyy-MM-dd hh:mm:ss dddd') # 设置时间的显示格式 timeLabel.setText(timeDisplay) # 在标签上显示时间 if __name__ == '__main__': app = QApplication(sys.argv) widget = MyWidget() widget.show() sys.exit(app.exec_()) ``` 在上述代码中,我们创建了一个名为MyWidget的自定义窗口类。在initUI方法中,我们创建了一个定时器对象self.timer,并将其timeout信号连接到showCurrentTime槽函数。showCurrentTime函数使用QDateTime获取当前时间,并将其显示在标签self.timeLabel上。最后,我们启动定时器self.timer,设置时间间隔为1秒。 记得在你的代码中调用statusShowTime方法,以便在界面中显示系统时间。 #### 引用[.reference_title] - *1* *2* [PyQt5之状态栏实时显示当前时间](https://blog.csdn.net/HG0724/article/details/116308195)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值