我试图在捕获最小化事件时继承QMainWindows并调用self.hide()。当我按下最小化按钮时,它被最小化为任务栏,当我在任务栏上按下它以使它再次出现在屏幕上时,我发现它不可见。只有QMainWindows的内容被隐藏,框架仍然存在。PyQt4:self.hide()只隐藏内容
self.hide()应该表现什么?
我想尽量减少到系统托盘,但许多我从这个question发现的答案没有奏效。
我试图在捕获最小化事件时继承QMainWindows并调用self.hide()。当我按下最小化按钮时,它被最小化为任务栏,当我在任务栏上按下它以使它再次出现在屏幕上时,我发现它不可见。只有QMainWindows的内容被隐藏,框架仍然存在。PyQt4:self.hide()只隐藏内容
self.hide()应该表现什么?
我想尽量减少到系统托盘,但许多我从这个question发现的答案没有奏效。
我试图子类QMainWindows并拨打电话到self.hide() 时,尽量减少事件被抓住了。当我按下最小化 按钮时,它最小化为任务栏,并且当我在 任务栏上按下它以使其再次出现在屏幕上时,我发现它不是 不可见。只有QMainWindows的内容被隐藏,并且框架 仍然存在。
self.hide()应该表现什么?
我相信这是正确的行为。当你做self.hide()
时,你并没有隐藏窗口(正如链接问题的接受答案中所建议的),而是隐藏其中的小部件。这就是为什么当你恢复时,你会看到框架,而不是小部件。
在你的链接的问题看到其他答案,并尝试它们 - 有代码示例。
UPDATE:
这里是一个工作例如从你的链接的问题(在KDE测试使用Python 2.7):
import sys
from PyQt4 import QtGui, QtCore
from PyQt4.QtGui import QDialog, QApplication, QPushButton, QLineEdit, QFormLayout,QSystemTrayIcon
class Example(QtGui.QWidget):
def __init__(self):
super(Example, self).__init__()
self.initUI()
def initUI(self):
self.icon = QSystemTrayIcon()
r = self.icon.isSystemTrayAvailable()
print r
self.icon.setIcon(QtGui.QIcon(':/trolltech/styles/commonstyle/images/networkdrive-16.png'))
self.icon.show()
#self.icon.setVisible(True)
self.setGeometry(300, 300, 250, 150)
self.setWindowIcon(QtGui.QIcon(':/trolltech/styles/commonstyle/images/networkdrive-16.png'))
self.setWindowTitle('Message box')
self.show()
self.icon.activated.connect(self.activate)
self.show()
def closeEvent(self, event):
reply = QtGui.QMessageBox.question(self, 'Message',
"Are you sure to quit?\n(choose No to minimize to tray, and double click to restore)",
QtGui.QMessageBox.Yes | QtGui.QMessageBox.No, QtGui.QMessageBox.No)
if reply == QtGui.QMessageBox.Yes:
event.accept()
else:
self.icon.show()
self.hide()
event.ignore()
def activate(self, reason):
print reason
if reason == 2:
self.show()
def __icon_activated(self, reason):
if reason == QtGui.QSystemTrayIcon.DoubleClick:
self.show()
def main():
app = QtGui.QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
在相关问题中,接受的答案建议调用self.hide()以“隐藏到托盘”,但只将窗口移动到任务栏,因此我不明白为什么这种方法有效。 – lamwaiman1988 2012-07-29 05:45:05
@ gunbuster363,看到我添加的代码 – warvariuc 2012-07-29 08:44:21
你可以把一些代码吗? – Jeff 2012-07-26 16:12:59