Найти - Пользователи
Полная версия: PyQT4 сигналы между классами
Начало » Python для новичков » PyQT4 сигналы между классами
1
noob_in_py
Доброго времени суток. Совсем новичек.
Python 2.7, PyQT4
Пытаюсь разобраться с сигналами в PyQT4. Если внутри класса проблем не возникает, то из одного в другой пробросить сигнал не получается. Набросал небольшой скрипт, на нем и пытаюсь это дело опробовать.
 #!/usr/bin/env python
from PyQt4 import QtCore, QtGui
from PyQt4.QtGui import *
from PyQt4.QtCore import Qt
import sys
class MainWind(QWidget):
        
    def __init__(self, parent=None):
        super(MainWind, self).__init__(parent)
        self.setWindowFlags(QtCore.Qt.FramelessWindowHint)
        self.resize(480, 80)
               
        self.label_1 = QtGui.QLabel("11111111")
        self.button_ok = QtGui.QPushButton("ok")
        self.button_e = QtGui.QPushButton("exit")
        
        self.vlayout = QtGui.QVBoxLayout()
        self.vlayout.addWidget(self.label_1)
        self.vlayout.addWidget(self.button_ok)
        self.vlayout.addWidget(self.button_e)
        
        self.setLayout(self.vlayout)
        
        
        self.button_ok.clicked.connect(self.operateval_show)
        self.button_e.clicked.connect(QtGui.qApp.quit)
        oper = OperateVal()
        oper.okClicked.connect(self.changetext)
        
        
    def operateval_show(self):
        win = OperateVal(self)
        win.show()
    
    def changetext(self):   
        self.label_1.setText('22222222222222')    
    
        
class OperateVal(QWidget):
    
    okClicked = QtCore.pyqtSignal()
    
    def __init__(self, parent=None):
        super(OperateVal, self).__init__(parent)
        self.setWindowFlags(Qt.Dialog)
        self.resize(500, 50)
        
        self.button_e = QtGui.QPushButton("exit")
        self.button_ok = QtGui.QPushButton("ok")
        
        self.vlayout = QtGui.QVBoxLayout()
        self.vlayout.addWidget(self.button_ok)
        self.vlayout.addWidget(self.button_e)
        
        self.setLayout(self.vlayout)
        
        self.button_ok.clicked.connect(self.okclick)
        self.button_e.clicked.connect(self.close)
        
 
        
    def okclick(self):
        self.okClicked.emit()
        
if __name__ == "__main__":
    import sys
    app = QApplication(sys.argv)
    window = MainWind()
    window.show()
    sys.exit(app.exec_())       

Суть проста: из MainWind вызываем OperateVal, в нем по кнопке “ОК” в MainWind надо изменить label_1.
На сколько я понимаю, сигнал эмитится, но не ловится в MainWind. Подскажите в какую сторону смотреть.
Всем спасибо.
Rodegast
 def operateval_show(self):
        win = OperateVal(self)
        win.okClicked.connect(self.changetext)
        win.show()
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB