Почему вы получаете RecursionError: максимальная глубина рекурсии превышена ?
Вы получаете его, потому что у вас есть циклический импорт, который генерирует бесконечный цикл, в testfile01 вы импортируете файл testfile02, а в testfile02 вы импортируете testfile01, .... Так что это демонстрация плохого дизайна.
Qt предлагает механизм сигналов для объектов, чтобы передавать информацию другим объектам, и это имеет преимущество в том, что классы не зависят друг от друга, что является большим долгосрочным преимуществом (как, например, предотвращение циклического импорта), поэтому для этого причина, я думаю, что это наиболее уместно.
Для этого я создам сигнал clicked в классе win02, который будет запускаться сигналом clicked кнопки, и сделаю этот сигнал clicked вызовом func:
testfile01.py
import sys
from PyQt5.QtWidgets import QWidget, QPushButton, QApplication
import testfile02 as t02
class win01(QWidget):
def __init__(self, parent=None):
super(win01, self).__init__(parent)
self.win02 = t02.win02()
self.win02.clicked.connect(self.func)
self.button = QPushButton("open win02", self)
self.button.move(100, 100)
self.button.clicked.connect(self.show_t02)
def show_t02(self):
self.win02.show()
def func(self):
print("yes!")
if __name__ == "__main__":
app = QApplication(sys.argv)
ex = win01()
ex.show()
sys.exit(app.exec_())
testfile02.py
from PyQt5.QtCore import pyqtSignal
from PyQt5.QtWidgets import QWidget, QPushButton, QVBoxLayout
class win02(QWidget):
clicked = pyqtSignal()
def __init__(self, parent=None):
super(win02, self).__init__(parent)
self.button = QPushButton("call to func")
self.button.clicked.connect(self.clicked)
lay = QVBoxLayout(self)
lay.addWidget(self.button)
Рекомендую прочитать: