为Python Pyqt中的所有表单创建全局变量

时间:2018-08-01 19:17:07

标签: python pyqt5

我可以在QMainWindow中创建一个全局变量并为其传递一个值,然后获取该值并以另一种形式[QDialog]打印它吗,我可以使用QMainWindow中的按钮将其打开?

1 个答案:

答案 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_()

enter image description here