我是PyQt的初学者。我试图创建一个简单的应用程序来尝试一些工具包的许多功能。我的问题是,如何隐藏任务栏中的应用程序图标? 我不希望用户能够在任务栏中看到该图标并使用该图标将其最小化。是否有任何窗口标志可以使用以实现此目的?
我是PyQt的初学者。我试图创建一个简单的应用程序来尝试一些工具包的许多功能。我的问题是,如何隐藏任务栏中的应用程序图标? 我不希望用户能够在任务栏中看到该图标并使用该图标将其最小化。是否有任何窗口标志可以使用以实现此目的?
这应该可以解决问题:
myApp.setWindowFlags(QtCore.Qt.Tool)
这让我苦恼了数天。下面是完整的应用程序代码实现。
关键点:
import sys
from PyQt4.QtGui import QAction, QApplication, QFrame, QIcon, \
QMainWindow, QMenu, QSystemTrayIcon
from PyQt4.QtCore import SIGNAL
class MyApp(QMainWindow):
def __init__(self, parent, title):
super(QMainWindow, self).__init__(parent)
self.exitOnClose = False
exit = QAction(QIcon(), "Exit", self)
self.connect(exit, SIGNAL("triggered()"), self.exitEvent)
self.trayIcon = QSystemTrayIcon(QIcon(), self)
menu = QMenu(self)
menu.addAction(exit)
self.trayIcon.setContextMenu(menu)
self.connect(self.trayIcon, \
SIGNAL("activated(QSystemTrayIcon::ActivationReason)"), \
self.trayIconActivated)
self.trayIcon.show()
self.trayIcon.showMessage("MyApp is running!", "Click to open window\nRight click for menu" )
def trayIconActivated(self, reason):
if reason == QSystemTrayIcon.Context:
self.trayIcon.contextMenu().show()
elif reason == QSystemTrayIcon.Trigger:
self.show()
self.raise_()
def closeEvent(self, event):
if self.exitOnClose:
self.trayIcon.hide()
del self.trayIcon
event.accept()
else:
self.hide()
event.setAccepted(True)
event.ignore()
def exitEvent(self):
self.exitOnClose = True
self.close()
if __name__ == "__main__":
app = QApplication(sys.argv)
myapp = MyApp(None, "My System Tray App")
app.exec_()
从this thread改编:
import sys
from PyQt4.QtGui import *
if __name__ == '__main__':
app = QApplication(sys.argv)
widget = QWidget()
mainWindow = QMainWindow(widget)
mainWindow.show()
sys.exit(app.exec_())
QWidget *mainWindow = new QWidget(0, Qt::CustomizeWindowHint
| Qt::WindowTitleHint | Qt::WindowSystemMenuHint
| Qt::WindowCloseButtonHint | Qt::WindowMaximizeButtonHint);
如果您不想要最大化标志,您可以将其从列表中省略。
Qt 可以使用的各种窗口标志在此处(Qt::WindowFlags)有文档记录。
如果您使用的是带有Unity的Ubuntu,并且想要从左侧的启动器中隐藏应用程序图标,则可能需要Qt.SplashScreen
。这对我有用,但我不记得是否还需要Qt.Tool
,在Windows上则足够了。对于SplashScreen尝试,您可能需要重新实现调整大小功能,因为它会禁用QStatusBar(具有SizeGrip)的此功能,例如。
这里是一个小例子,可以尝试窗口标志。
只需像这样初始化您的主窗口 self.setWindowFlags(Qt.ToolTip)
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5 import QtCore
import sys
class Window(QMainWindow):
def __init__(self):
super().__init__()
# this will hide the app from task bar
self.setWindowFlag(QtCore.Qt.Tool)
self.setGeometry(60, 60, 800, 500)
# creating a label widget
# by default label will display at top left corner
self.label_1 = QLabel('no task bar', self)
# moving position
self.label_1.move(100, 100)
# show all the widgets
self.show()