我想创建一个Windows桌面小部件。我将在Qt Designer中为小部件创建自定义UI,并使用Python添加功能。但是,我不希望应用程序在任务栏上有一个图标。我应该如何修改我的代码并使我的应用程序(及其实例或其他类似应用程序)没有任务栏足迹?
如何在Windows上隐藏任务栏图标?这是一个示例代码:
import sys
from PyQt4 import QtGui
from PyQt4.uic import loadUiType
Ui_MainWindow, QMainWindow = loadUiType('try.ui')
class Main(QMainWindow, Ui_MainWindow):
def __init__(self, ):
super(Main, self).__init__()
self.setupUi(self)
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
main = Main()
main.show()
sys.exit(app.exec_())
这是它的ui," try.ui":
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>211</width>
<height>157</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<widget class="QPushButton" name="pushButton">
<property name="geometry">
<rect>
<x>60</x>
<y>60</y>
<width>75</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>PushButton</string>
</property>
</widget>
</widget>
<resources/>
<connections/>
</ui>
编辑:Here是任务栏上默认图标的样子。我只是不想在那里,正如预期的小部件。
答案 0 :(得分:3)
试试这个:
from PyQt4 import QtCore
...
class Main(QMainWindow, Ui_MainWindow):
def __init__(self, ):
super(Main, self).__init__()
self.setWindowFlags(QtCore.Qt.Tool) #This
答案 1 :(得分:0)
我认为this可能是问题:
在Windows 7中,任务栏本身不适用于“应用程序窗口”, 这是“应用程序用户模型”。例如,如果你有几个 应用程序运行的不同实例,每个实例都有 它自己的图标,然后它们将被分组在一个任务栏下 图标。 Windows使用各种启发式方法来决定是否不同 实例应该是否分组,在这种情况下,它决定了 由Pythonw.exe托管的所有内容都应该分组在图标下 Pythonw.exe。
正确的解决方案是让Pythonw.exe告诉Windows它是 仅托管其他应用程序。也许是Python的未来版本 会这样做。或者,您可以添加一个注册表项来告诉 Windows中的Pythonw.exe只是一个主机而不是一个应用程序 它自己的权利。请参阅AppUserModelIDs的MSDN文档。
或者,您可以使用Python的Windows调用来显式地使用 告诉Windows这个过程的正确AppUserModelID是什么:
import ctypes myappid = 'mycompany.myproduct.subproduct.version' #
arbitrary string
ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID(myappid)