В настоящее время я работаю над графическим интерфейсом с PyQt5 (я нуб, когда дело доходит до Python и Qt), и мне нужно излучать сигнал из одного класса в другой.
Я читал об этом ипогуглил, а также нашел много полезных вещей, но они все еще не работают для меня.
Это мой кодовый манекен:
Номер класса 1:
import sys
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
import Class2
class Class1(QWidget):
eventButtonPressed = pyqtSignal(str)
def __init__(self, parent=None):
super().__init__(parent)
self.Class1Btn = QPushButton('Button')
self.Class1Edit = QLineEdit(self)
self.Class1Btn.clicked.connect(self.clicked)
# Layout stuff to mimic my real program
self.Class1Grid = QGridLayout(self)
self.Class1Grid.addWidget(self.Class1Btn)
self.Class1Grid.addWidget(self.Class1Edit)
self.groupBoxLayout1 = QGroupBox(self)
self.groupBoxLayout1.setLayout(self.Class1Grid)
def clicked(self):
self.eventButtonPressed.emit(self.Class1Edit.text())
Класс Nr.2:
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
import Class1
class Class2(QWidget):
def __init__(self):
super().__init__()
self.Class1OBJ = Class1.Class1(self)
self.Class1OBJ.eventButtonPressed.connect(self.StuffWhenSignalIsEmitted)
# Layout stuff to mimic my real program
self.Class2Edit = QLineEdit(self)
self.Class2Grid = QGridLayout(self)
self.Class2Grid.addWidget(self.Class2Edit)
self.groupBoxLayout2 = QGroupBox(self)
self.groupBoxLayout2.setLayout(self.Class2Grid)
def StuffWhenSignalIsEmitted(self, text):
print('Text from Class 2 Widget: {}'.format(self.Class2Edit))
print('Text from Class 1 Widget: {}'.format(text))
Мое главное окно:
import sys
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
import Class1
import Class2
class MainWindow(QWidget, QApplication):
def __init__(self):
super().__init__()
self.Class1OBJ = Class1.Class1()
self.Class2OBJ = Class2.Class2()
self.WinLayout = QVBoxLayout(self)
self.WinLayout.addWidget(self.Class1OBJ.groupBoxLayout1)
self.WinLayout.addWidget(self.Class2OBJ.groupBoxLayout2)
self.setGeometry(1100, 300, 300, 300)
self.setWindowTitle("GUI")
self.show()
app = QApplication(sys.argv)
w = MainWindow()
w.show()
sys.exit(app.exec_())
Я хочу, чтобы программа печатала операторы из метода StuffWhenSignalIsEmitted при нажатии кнопки (если онавозможно).Поэтому я хочу напечатать, что находится в LineEdit из первого класса, а также то, что находится в LineEdit из второго класса.