我正在用PyQt编写一个非常小的应用程序。到目前为止,我的所有测试都在Ubuntu / gnome上进行。
我想要一个单独的“弹出窗口”样式窗口,没有任务栏/面板条目,它会在失去焦点时关闭自己(和应用程序)。
Qt.Popup标志似乎符合要求,但我遇到了一个奇怪的问题。我注意到它可能(实际上非常容易)在应用程序启动时将焦点从应用程序中移开,留下没有焦点的弹出窗口 - 现在无法关闭它,因为它不会失去焦点。 / p>
这是一个简化的例子:
#!/usr/bin/python
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
if __name__ == '__main__':
app = QApplication(sys.argv)
w = QDialog()
w.setWindowFlags(Qt.Popup)
w.exec_()
如果在程序启动的同一时刻点击一下,QDialog将无焦点出现,并且在任何情况下都不会自行关闭。单击弹出窗口不会恢复焦点或允许其关闭。
我可以在弹出窗口中添加一个关闭按钮(我打算!),但这并不能解决破坏的近距离焦点行为。我有什么其他的东西我应该用Qt.Popup窗口来防止这种情况,还是有某些方法可以解决它?
答案 0 :(得分:4)
使用QWidget :: raise()似乎对此有所帮助。 (还冒昧并修复了你的app事件循环)
#!/usr/bin/python
import sys
#import time
from PyQt4.QtCore import *
from PyQt4.QtGui import *
if __name__ == '__main__':
#time.sleep(2)
app = QApplication(sys.argv)
w = QDialog()
w.setWindowFlags(Qt.Popup)
w.setAttribute(Qt.WA_QuitOnClose)
w.show()
w.raise_()
sys.exit(app.exec_())