Я пытаюсь заставить функцию изменить текст, указанный на вкладке, но у меня возникают проблемы с поиском правильной ссылки на вкладку.
Приведенный ниже код работает, но ничего не делает, поскольку в одной строкезакомментировано.Я знаю, что проблема связана с «я» в этой строке (не комментирование строки вызывает ошибку при нажатии кнопки), но я не знаю, что должно идти туда, чтобы она работала.Я предполагаю, что моя проблема в том, что вкладка создается другим классом, но я хочу иметь возможность открывать несколько вкладок с одинаковыми виджетами в каждой (как делает этот код).Придется ли мне реструктурировать код, чтобы эта работа работала?
from PyQt5.QtWidgets import (QMainWindow, QApplication, QAction, qApp,
QPushButton, QWidget, QMenu, QVBoxLayout, QTabWidget, QLineEdit,
QLabel, QHBoxLayout)
import sys
class MainWin(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
exitAct = QAction('&Exit', self)
exitAct.triggered.connect(qApp.quit)
newAct = QAction('&New Tab', self)
newAct.triggered.connect(self.newTab)
menubar = self.menuBar()
fileMenu = menubar.addMenu('&File')
fileMenu.addAction(newAct)
fileMenu.addAction(exitAct)
self.layout = QVBoxLayout()
self.tabbed = QTabWidget(self)
self.layout.addWidget(self.tabbed)
self.setCentralWidget(self.tabbed)
self.show()
def newTab(self):
self.tab1 = tabbedFrame(self.tabbed)
self.tabbed.addTab(self.tab1, self.tab1.tabName)
class tabbedFrame(QWidget):
def __init__(self, parent):
super(tabbedFrame, self).__init__(parent)
layout = QVBoxLayout()
self.updateButton = QPushButton("Update")
self.updateButton.clicked.connect(self.updateTab)
layout.addWidget(QLabel("Tab Name"))
self.nameLineEdit = QLineEdit("New Tab")
self.tabName = self.nameLineEdit.text()
layout.addWidget(self.nameLineEdit)
layout.addWidget(self.updateButton)
self.setLayout(layout)
def updateTab(self):
tabindex = win.tabbed.currentIndex
#win.tabbed.setTabText(self, tabindex, self.tabName)
if __name__ == '__main__':
app = QApplication(sys.argv)
win = MainWin()
sys.exit(app.exec_())