Я пытаюсь регулярно обновлять метку PyQt, но поскольку метка создается внутри другого экземпляра класса __init__
Я не могу понять, как это сделать самостоятельно.
Вотупрощенная версия кода:
from PyQt5.QtCore import QTimer,QSize
from PyQt5.QtWidgets import (QApplication, QMainWindow, QLabel, QTabWidget, QVBoxLayout, QWidget)
import sys
class Main(QMainWindow): #01 THIS IS THE MAIN WINDOW
def __init__(self):
super().__init__()
self.setMinimumSize(QSize(640,480))
self.tabs_widget = Tabs(self)
self.setCentralWidget(self.tabs_widget)
class Tabs(QWidget): #02 SPLIT MAIN WINDOW TO TABS
def __init__(self, parent):
super(QWidget, self).__init__(parent)
self.tabWidget = QTabWidget()
self.tabWidget.addTab(TabOne(), "TabOne")
self.textOne = QLabel("Text One - to be changed")
mainLayout = QVBoxLayout()
mainLayout.addWidget(self.textOne)
mainLayout.addWidget(self.tabWidget)
self.setLayout(mainLayout)
def updateTextOne(self):
self.textOne.setText("Text One - already changed")
class TabOne(QWidget): #03 TAB ONE
def __init__(self):
super().__init__()
mainLayout = QVBoxLayout()
self.textTwo = QLabel("Text Two to be changed")
mainLayout.addWidget(self.textTwo)
self.setLayout(mainLayout)
#THIS IS THE METHOD I WOULD LIKE TO ACCESS!!!
def updateTextTwo(self):
self.textTwo.setText("Text Two - already changed")
if __name__ == "__main__":
app = QApplication(sys.argv)
main = Main()
main.show()
timer = QTimer()
timer.timeout.connect(main.tabs_widget.updateTextOne)
timer.start(2000)
#CAN'T FIGURE OUT HOW TO ACCESS CLASS TabOne > UpdateTextTwo()
# timer = QTimer()
# timer.timeout.connect(main.tabs_widget.tabWidget.)
# timer.start(2000)
sys.exit(app.exec_())
Есть два Qlabels, 'textOne' находится внутри класса Tabs, я могу обновить его, запустив updateTextOne()
из if __name__ == "__main__":
Я могуНе могу понять, как получить доступ к методу updateTextTwo()
, однако, он находится в другом классе TabOne, экземпляр которого создан в предыдущем классе. Tabs __init__
.
Другие вопросы: есть ли лучший способ для достижения этихметоды.Это только начало проекта, но эти вложенные экземпляры уже делают проект слишком сложным для моих навыков программирования?