我可以在QMainWindow中创建一个全局变量并为其传递一个值,然后获取该值并以另一种形式[QDialog]打印它吗,我可以使用QMainWindow中的按钮将其打开?
答案 0 :(得分:0)
尝试一下:
import sys
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
class MainWindow(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
self.setWindowIcon(self.style().standardIcon(QStyle.SP_TitleBarMenuButton))
self.resize(300, 150)
centerWidget = QWidget()
layout = QVBoxLayout()
self.setStyleSheet('background-color : rgb(255,255,255);')
self.setWindowTitle('MainWindow')
self.lineEdit = QLineEdit("Type here what you want to transfer for [qdialog].")
self.pushButton = QPushButton(self)
self.pushButton.setStyleSheet('background-color: rgb(255,0,0); color: #fff')
self.pushButton.setText('Pass a value for [qdialog]')
self.pushButton.clicked.connect(self.A)
layout.addWidget(self.lineEdit)
layout.addWidget(self.pushButton)
centerWidget.setLayout(layout)
self.setCentralWidget(centerWidget)
def A(self):
self.cams = Form(self.lineEdit.text())
self.cams.show()
self.close()
class Form(QDialog):
def __init__(self, value, parent=None):
super().__init__(parent)
self.setWindowTitle('Form(QDialog)')
self.setWindowIcon(self.style().standardIcon(QStyle.SP_FileDialogInfoView))
label1 = QLabel(value)
self.button = QPushButton()
self.button.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Expanding)
self.button.setIcon(self.style().standardIcon(QStyle.SP_ArrowLeft))
self.button.setIconSize(QSize(200, 200))
layoutV = QVBoxLayout()
self.pushButton = QPushButton(self)
self.pushButton.setStyleSheet('background-color: rgb(0,0,255); color: #fff')
self.pushButton.setText('Click me!')
self.pushButton.clicked.connect(self.B)
layoutV.addWidget(self.pushButton)
layoutH = QHBoxLayout()
layoutH.addWidget(label1)
layoutH.addWidget(self.button)
layoutV.addLayout(layoutH)
self.setLayout(layoutV)
def B(self):
self.cams = MainWindow()
self.cams.show()
self.close()
if __name__ == '__main__':
myApp = QApplication(sys.argv)
myMainWindow = MainWindow()
myMainWindow.show()
myApp.exec_()