1
我正在使用python和pyqt。我有一個我想暫時隱藏的對話框。調用如何在隱藏後重新顯示QDialog?
dlg.hide()
後,我嘗試調用
dlg.show()
但沒有任何反應。它永遠不會重新顯示。
我是pyqt的新手,非常感謝您的幫助。
在此先感謝。
我正在使用python和pyqt。我有一個我想暫時隱藏的對話框。調用如何在隱藏後重新顯示QDialog?
dlg.hide()
後,我嘗試調用
dlg.show()
但沒有任何反應。它永遠不會重新顯示。
我是pyqt的新手,非常感謝您的幫助。
在此先感謝。
您正在尋找exec_
方法,使對話模式,瞭解其工作原理:
#!/usr/bin/env python
#-*- coding:utf-8 -*-
from PyQt4 import QtCore, QtGui
class myDialog(QtGui.QDialog):
def __init__(self, parent=None):
super(myDialog, self).__init__(parent)
self.dialog = None
self.buttonShow = QtGui.QPushButton(self)
self.buttonShow.setText("Show Dialog")
self.buttonShow.clicked.connect(self.on_buttonShow_clicked)
self.buttonHide = QtGui.QPushButton(self)
self.buttonHide.setText("Close")
self.buttonHide.clicked.connect(self.on_buttonHide_clicked)
self.layout = QtGui.QVBoxLayout(self)
self.layout.addWidget(self.buttonShow)
self.layout.addWidget(self.buttonHide)
@QtCore.pyqtSlot()
def on_buttonHide_clicked(self):
self.accept()
@QtCore.pyqtSlot()
def on_buttonShow_clicked(self):
self.dialog = myDialog(self)
self.dialog.exec_()
class myWindow(QtGui.QWidget):
def __init__(self, parent=None):
super(myWindow, self).__init__(parent)
self.buttonShow = QtGui.QPushButton(self)
self.buttonShow.setText("Show Dialog")
self.buttonShow.clicked.connect(self.on_buttonShow_clicked)
self.layout = QtGui.QVBoxLayout(self)
self.layout.addWidget(self.buttonShow)
self.dialog = myDialog(self)
@QtCore.pyqtSlot()
def on_buttonHide_clicked(self):
self.dialog.accept()
@QtCore.pyqtSlot()
def on_buttonShow_clicked(self):
self.dialog.exec_()
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
app.setApplicationName('myWindow')
main = myWindow()
main.show()
sys.exit(app.exec_())
我發起第二次對話的第一對話。所以我想從第一個對話框中隱藏它,顯示第二個對話框,然後一旦被接受,再次顯示第一個對話框。 – robert
@robert結帳我的[更新的答案](http://stackoverflow.com/a/14241258/1006989)我修改它顯示父對話框關閉子對話框後 – 2013-01-10 10:12:44