pyqt-todolist/test/SystemTray.py
2022-04-26 17:07:00 +08:00

128 lines
3.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import os
import sys
from PyQt5 import QtWidgets
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import (
QApplication, QMainWindow,
QLabel, QGridLayout, QWidget,
QCheckBox, QSystemTrayIcon, QFormLayout,
QSpacerItem, QSizePolicy, QMenu, QAction, QStyle, QDialog, QPushButton, QMessageBox)
class MessageBox(QMessageBox):
def __init__(self):
super(MessageBox, self).__init__()
save_config = QCheckBox('记住选择')
self.layout().addWidget(save_config)
class SystemTray(QWidget):
def __init__(self):
super(SystemTray, self).__init__()
self.resize(500, 400)
# layout = QFormLayout()
# # self.setLayout(layout)
#
# label = QLabel('最小化到系统托盘?')
# layout.addRow(label)
# Init QSystemTrayIcon
self.tray_icon = QSystemTrayIcon(self)
self.tray_icon.setIcon(QIcon(os.getcwd() + '/../images/todo_info.svg'))
# # self.style().standardIcon(QStyle.SP_ComputerIcon))
#
# self.checkbox = QCheckBox('最小化')
# layout.addWidget(self.checkbox)
'''
Define and add steps to work with the system tray icon
show - show window
hide - hide window
exit - exit from application
'''
show_action = QAction("显示", self)
quit_action = QAction("退出", self)
hide_action = QAction("隐藏", self)
show_action.triggered.connect(self.show)
hide_action.triggered.connect(self.hide)
quit_action.triggered.connect(QApplication.instance().quit)
tray_menu = QMenu()
tray_menu.addAction(show_action)
tray_menu.addAction(hide_action)
tray_menu.addAction(quit_action)
self.tray_icon.setContextMenu(tray_menu)
self.tray_icon.show()
# self.exit_widget = QWidget(self)
#
# self.exit_widget.setLayout(layout)
# 关闭窗口时弹出确认消息
def closeEvent(self, event):
# 创建一个消息盒子(提示框)
quitMsgBox = QMessageBox()
quitMsgBox.resize(300, 200)
# 设置提示框的标题
quitMsgBox.setWindowTitle('确认窗口')
# 设置提示框的内容
quitMsgBox.setText('你确定退出吗?')
# 创建两个点击的按钮,修改文本显示内容
buttonY = QPushButton('退出程序')
buttonN = QPushButton('最小化到托盘')
# 将两个按钮加到这个消息盒子中去并指定yes和no的功能
style = """
/*设置堆栈按钮样式*/
QPushButton {
/* padding: 3px 20px;*/
/* text-align:center;*/
background-color:orange;
border-radius:15px;
}
QPushButton:hover {
/* padding: 3px 20px;*/
/* text-align:center;*/
background-color:#dddddd;
border-radius:15px;
}
QPushButton:pressed {
/* padding: 3px 20px;*/
/* text-align:center;*/
background-color:#9f9f9f;
border-radius:15px;
}
"""
buttonY.setStyleSheet(style)
buttonN.setStyleSheet(style)
quitMsgBox.addButton(buttonY, QMessageBox.YesRole)
quitMsgBox.addButton(buttonN, QMessageBox.NoRole)
quitMsgBox.exec_()
# 判断返回值如果点击的是Yes按钮我们就关闭组件和应用否则就忽略关闭事件
if quitMsgBox.clickedButton() == buttonY:
event.accept()
else:
self.hide()
event.ignore()
# if self.checkbox.isChecked():
# event.ignore()
# self.hide()
# if self.check_box.isChecked():
# event.ignore()
# self.hide()
# self.tray_icon.showMessage(
# "Tray Program",
# "Application was minimized to Tray",
# QSystemTrayIcon.Information,
# 2000
# )
if __name__ == '__main__':
app = QApplication(sys.argv)
main = SystemTray()
main.show()
sys.exit(app.exec_())