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