我正在一个项目中,用户需要快速访问滑块和其他小部件,我想在系统托盘菜单中添加一些小部件
我已经尝试过创建自定义菜单(请参见下面的代码),并且在将菜单添加到菜单栏中时可以正常工作:
但在将自定义菜单添加到系统任务栏时不是:
(菜单为空,只有几像素高)
如何将自定义窗口小部件放入系统托盘?
感谢帮助!
from PyQt5 import QtCore
from PyQt5 import QtGui
from PyQt5 import QtWidgets
import sys
class MyMainWindow(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
self.setGeometry(100, 100, 400, 300)
self.central_widget = QtWidgets.QWidget()
self.setCentralWidget(self.central_widget)
vbox_l2 = QtWidgets.QVBoxLayout()
self.central_widget.setLayout(vbox_l2)
self.tray_icon = QtWidgets.QSystemTrayIcon(
QtGui.QIcon(),
self
)
self.tray_icon.show()
self.tray_menu = CustomMenu()
self.tray_icon.setContextMenu(self.tray_menu)
# Main menu
self.main_menu = CustomMenu()
self.menu_bar = self.menuBar()
self.menu_bar.addMenu(self.main_menu)
self.show()
class CustomMenu(QtWidgets.QMenu):
def __init__(self):
super().__init__()
self.setTitle("custom menu title")
vbox = QtWidgets.QVBoxLayout()
self.setLayout(vbox)
# self.setMen
self.my_label = QtWidgets.QLabel("test label in custom layout")
vbox.addWidget(self.my_label)
self.my_slider = QtWidgets.QSlider()
self.my_slider.setMinimum(0)
self.my_slider.setMaximum(10)
self.my_slider.setOrientation(QtCore.Qt.Horizontal)
vbox.addWidget(self.my_slider)
self.show()
# self.addAction("example action")
app = QtWidgets.QApplication(sys.argv)
main_window = MyMainWindow()
main_window.show()
app.exec_()