繁体   English   中英

从任务栏隐藏窗口

[英]Hide window from taskbar

我正在尝试最小化托盘的窗口,但似乎它拒绝从任务栏隐藏。 我花了一些时间,将问题代码精简到了这一点。 它不是mcuh,所以我想知道是否需要其他东西来将我的应用程序隐藏在Windows 7中的托盘中。

import sys, os
from PyQt4 import uic 
from PyQt4.QtGui import QMainWindow, QApplication

class MyClass(QMainWindow):
    def __init__(self, parent = None):
        QMainWindow.__init__(self, parent)
        self.ui = uic.loadUi(os.path.join("gui", "timeTrackerClientGUI.ui"), self)
    def hideEvent(self, event):
        self.hide()
    def showEvent(self, event):
        self.show()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    wnd = MyClass()
    wnd.show()
    app.exec_()

似乎应用程序图标确实隐藏了,但随后又弹出了一个图标。如果多次单击任务栏图标,我可以使这两个图标闪烁,在第一个图标隐藏之前的瞬间看起来像这样:

替代文字

要使其正常工作,需要花很丑陋的技巧,但是如果有兴趣的人,这是最终的代码,ph是我特定于平台的模块,您可以改用platform.name或类似的函数:

def hideEvent(self, event):
    self.hide()
    if ph.is_windows():
        self.hidden = True
        self.setWindowFlags(Qt.ToolTip)
def showEvent(self, event):
    if ph.is_windows() and self.hidden:
        self.setWindowFlags(Qt.Window)
        self.hidden = False
    self.show()

在showEvent()/ hideEvent()中调用show / hide没有意义-这些事件是show()/ hide()调用(等等)的结果,而不是触发器。 如果要通过单击托盘图标来切换窗口可见性,请尝试在小部件上设置setVisible(!isVisible()),如果要在用户单击窗口关闭按钮时隐藏窗口,请尝试重新实现closeEvent():

MyMainWindow::closeEvent( QCloseEvent* e ) {
    hide();
    e->accept();
}

在Python中,

def closeEvent(self, event):
    self.hide()
    event.accept()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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