![](/img/trans.png)
[英]How to set Window and Taskbar Icon with PyQT4 and PyInstaller?
[英]How to hide taskbar icon of a PyQt4 Python application?
我想创建一个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>
编辑: 以下是任务栏上默认图标的外观。 我只是不希望它在那里,正如预期的小部件。
尝试这个:
from PyQt4 import QtCore
...
class Main(QMainWindow, Ui_MainWindow):
def __init__(self, ):
super(Main, self).__init__()
self.setWindowFlags(QtCore.Qt.Tool) #This
我想这可能是问题所在:
在Windows 7中,任务栏本身不适用于“应用程序Windows”,它适用于“应用程序用户模型”。 例如,如果您运行了多个不同的应用程序实例,并且每个实例都有自己的图标,那么它们将全部分组到一个任务栏图标下。 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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.