繁体   English   中英

如何隐藏PyQt4 Python应用程序的任务栏图标?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM