:
はここに関連するコードです。メインウィンドウはQMainWindow
です。ボタンをクリックするとQDialog
が開きます。彼らのUI定義:別のファイルで
# file ui_main.py
from PyQt5 import QtCore, QtWidgets
class Ui_MainWindow:
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(442, 205)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.pushButton = QtWidgets.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(180, 80, 75, 23))
self.pushButton.setObjectName("pushButton")
MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.pushButton.setText(_translate("MainWindow", "PushButton"))
#file ui_dialog.py
from PyQt5 import QtCore, QtWidgets
class Ui_Dialog:
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(508, 300)
self.buttonBox = QtWidgets.QDialogButtonBox(Dialog)
self.buttonBox.setGeometry(QtCore.QRect(150, 250, 341, 32))
self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok)
self.buttonBox.setObjectName("buttonBox")
self.buttonBox.accepted.connect(Dialog.accept)
self.buttonBox.rejected.connect(Dialog.reject)
QtCore.QMetaObject.connectSlotsByName(Dialog)
は、MainWindow
とPreferenceDialog
クラスを定義します。
# file main.py
from PyQt5.QtWidgets import QMainWindow, QApplication, QDialog
from ui_dialog import Ui_Dialog
from ui_main import Ui_MainWindow
class MainWindow(QMainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
self.ui.pushButton.clicked.connect(self.newusr_clk)
newuser_clk
スロットはMainWindow
を隠し、dialog.exec()
を経由して新しいQDialog
ボックスを開きます。 QDialog
が閉じられると、MainWindow
が再び表示されます。
class PreferencesDialog(QDialog):
def __init__(self, parent=None):
super(PreferencesDialog, self).__init__(parent)
self.ui = Ui_Dialog()
self.ui.setupUi(self)
そして、ここでは、スクリプトを実行する方法は次のとおりです:助け
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
希望ここ
def newusr_clk(self):
self.hide()
dialog = PreferencesDialog(parent=self)
if dialog.exec():
pass # do stuff on success
self.show()
はPreferenceDialog
クラスです!
'window.hide()'や ' window.close() ' – ekhumoro
私は2つのどちらかを使用すると、そのような属性がないというエラーが表示されます。 –
'QWidget'を継承したクラスのインスタンスでそれらを使用します。 – ekhumoro