我需要您的应用程序的帮助。我与Python 3.6和Pyqt5一起工作。
我有一个主窗,没有小部件,但是带有梅纳巴尔。用户需要选择"文件"one_answers"创建项目"。之后,一个次要窗口用按钮打开。当我单击此按钮时,此辅助窗口关闭。
我想找到如何在主窗口中添加许多小部件,并在辅助窗口闭合后再次在此窗口中进行操作。
import sys
from PyQt5.QtWidgets import QWidget, QPushButton, QApplication, QDialog
from PyQt5 import QtWidgets, QtCore
class MainWindow(QtWidgets.QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.createUI()
def createUI(self):
self.setWindowTitle('Application')
menu = self.menuBar().addMenu('File')
action = menu.addAction('Create project')
action.triggered.connect(self.create_project_pop_up)
self.show()
return self
def create_project_pop_up(self):
self.exPopup = Ui_Dialog()
self.exPopup.setGeometry(475, 275, 400, 300)
self.exPopup.show()
class Ui_Dialog(QDialog):
def __init__(self):
super().__init__()
self.pop_up()
def pop_up(self):
self.pushButton = QtWidgets.QPushButton(self)
_translate = QtCore.QCoreApplication.translate
self.pushButton.setText(_translate("Dialog", "OK"))
self.pushButton.clicked.connect(self.create_project)
def create_project(self):
self.close()
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
sys.exit(app.exec_())
谢谢您的所有帮助
有很多方法可以做到这一点,最简单的方法可以显示您介绍信号和插槽的概念,就像您在编写self.pushButton.clicked.connect(self.create_project)
时使用默认信号的方式相同
因此,您刚才必须创建自己的信号并执行相同的逻辑。现在您有这样的东西:
import sys
from PyQt5.QtCore import pyqtSignal, pyqtSlot
from PyQt5.QtWidgets import QWidget, QPushButton, QApplication, QDialog,
QVBoxLayout, QLabel
from PyQt5 import QtWidgets, QtCore
class MainWindow(QtWidgets.QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.createUI()
def createUI(self):
self.setWindowTitle('Application')
menu = self.menuBar().addMenu('File')
action = menu.addAction('Create project')
action.triggered.connect(self.create_project_pop_up)
self.show()
return self
def create_project_pop_up(self):
self.exPopup = Ui_Dialog()
self.exPopup.signal_create_project.connect(self.modify_ui)
self.exPopup.setGeometry(475, 275, 400, 300)
self.exPopup.show()
@pyqtSlot()
def modify_ui(self):
self.central_widget = QWidget()
self.layout = QVBoxLayout()
self.central_widget.setLayout(self.layout)
self.setCentralWidget(self.central_widget)
self.lbl_project = QLabel("Now we have a new project created;")
self.layout.addWidget(self.lbl_project)
class Ui_Dialog(QDialog):
signal_create_project = pyqtSignal()
def __init__(self):
super().__init__()
self.pop_up()
def pop_up(self):
self.pushButton = QtWidgets.QPushButton(self)
_translate = QtCore.QCoreApplication.translate
self.pushButton.setText(_translate("Dialog", "OK"))
self.pushButton.clicked.connect(self.create_project)
def create_project(self):
self.close()
self.signal_create_project.emit()
if __name__ == '__main__':
app = QApplication(sys.argv)
mw = MainWindow()
mw.show()
sys.exit(app.exec_())
注意:还有许多其他方法可以做到这一点,但是我想说的是我可以根据您给我的最简单的例子。仍然使用与信号一起使用的相同的推理,您还可以修改我在按钮中单击按钮以便已经在之前设置所有设置的部分,然后单击创建项目时,您只需显示事物以前被隐藏了。由您选择您真正需要的东西,我只是给您一些想法。"(