很难描述我想在这里做什么,所以这就是我想要的:
- 点击“弹出”对话框的按钮。
- 但是,这个对话框应该是非模态的。
- 我也希望它与父应用程序“锁定”,所以如果我移动它,它也会随之而来。
似乎我或多或少想要描述一个内联弹出窗口,但我不确定这是不是所谓的,甚至我应该如何处理这个问题。那么,PyQt大师,你会怎么做这样的东西?提前谢谢。
答案 0 :(得分:3)
要获得无模式对话框,请使用show()而不是exec_()打开它。
要确保对话框“与父应用程序锁定”,请在对话框的构造函数中设置父窗口。
from PyQt4 import QtGui
class Window(QtGui.QWidget):
def __init__(self):
QtGui.QWidget.__init__(self)
button = QtGui.QPushButton('Open Dialog', self)
button.clicked.connect(self.handleOpenDialog)
self.resize(300, 200)
self._dialog = None
def handleOpenDialog(self):
if self._dialog is None:
self._dialog = QtGui.QDialog(self)
self._dialog.resize(200, 100)
self._dialog.show()
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
win = Window()
win.show()
sys.exit(app.exec_())
答案 1 :(得分:0)
对于Qt5:
我忽略了为什么dialog.setWindowModality(QtCore.Qt.NonModal)
不起作用,但是
dialog.run()
dialog.exec_()
可以。 run
将使对话框成为非模态对话框,而exec_
将阻止该对话框,直到用户输入为止。