Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PyQt小部件通信_Python_Qt_Widget_Pyqt_Pyqt4 - Fatal编程技术网

Python PyQt小部件通信

Python PyQt小部件通信,python,qt,widget,pyqt,pyqt4,Python,Qt,Widget,Pyqt,Pyqt4,我有两个小部件:第一个(Form1)有一个组合框。如果我使用控制台上显示的这个组合框。(#这很好) 但我想在第二个小部件(Form2)上使用这个变量,但我没有显示它。(#这很糟糕)如何在Form2小部件上使用此“文本”变量 import sys from functools import partial from PyQt4.QtGui import * from PyQt4.QtCore import * from PyQt4 import QtGui, QtCore from math i

我有两个小部件:第一个(Form1)有一个组合框。如果我使用控制台上显示的这个组合框。(#这很好) 但我想在第二个小部件(Form2)上使用这个变量,但我没有显示它。(#这很糟糕)如何在Form2小部件上使用此“文本”变量

import sys

from functools import partial
from PyQt4.QtGui import *
from PyQt4.QtCore import *
from PyQt4 import QtGui, QtCore
from math import sqrt
from time import gmtime, strftime

text = ""

    class Form1(QWidget):
        showForm2Signal = pyqtSignal()

        def __init__(self, parent=None):
            super(Form1, self).__init__(parent)

            self.comboBox = QtGui.QComboBox(self)
            self.comboBox.addItem("Text 1")
            self.comboBox.addItem("Text 2")
            self.comboBox.addItem("Text 3")
            self.comboBox.addItem("Text 4")
            self.comboBox.addItem("Text 5")
            self.comboBox.addItem("Text 6")
            self.comboBox.addItem("Text 7")
            self.comboBox.move(20, 20)
            self.comboBox.resize(360,30)
            self.comboBox.currentIndexChanged.connect(self.selectionchange)

            layout = QVBoxLayout(self)

            ok_button = QtGui.QPushButton("OK", self)
            ok_button.resize(ok_button.minimumSizeHint())
            ok_button.move(0,340)
            ok_button.resize(400,60)
            ok_button.setStyleSheet("color: #25373D; background-color: #71BA51;  font-size: 16pt; font-weight: bold;")

            ok_button.clicked.connect(self.showForm2Signal.emit)

        def selectionchange(self,i):     
            text = self.comboBox.currentText()
            #This is good
            print text

    class Form2(QWidget):
        showForm1Signal = pyqtSignal()

        def __init__(self, parent=None):
            super(Form2, self).__init__(parent)
            #This is bad
            print text
            self.backButton = QPushButton("Back", self)
            self.backButton.clicked.connect(self.showForm1Signal.emit)


    class MainWidget(QWidget):
        def __init__(self, parent=None):
            super(MainWidget, self).__init__(parent)
            self.stack = QStackedWidget()
            layout = QVBoxLayout(self)
            layout.addWidget(self.stack)
            layout.setContentsMargins(0, 0, 0, 0)
            self.setGeometry(0, 0, 400, 400)
            self.setWindowTitle("TEST")
            self.form1 = Form1(self)
            self.form2 = Form2(self)
            self.stack.addWidget(self.form1)
            self.stack.addWidget(self.form2)

            self.form1.showForm2Signal.connect(partial(self.stack.setCurrentWidget,self.form2))
            self.form2.showForm1Signal.connect(partial(self.stack.setCurrentWidget,self.form1))
            self.stack.setCurrentWidget(self.form1)  
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        w = MainWidget()
        w.show()
        app.exec_()
        sys.exit()

使用“构造函数”创建
Form2
(self,self.form1),您将可以从
form1
访问元素。或者在
form2
中使用类似于
parent.form1.comboBox
的东西。也许您可以使用一些
信号
来连接
form1.selectionchange
form2