Как добавить вкладки QTabWidget Python
Как сделать так, чтобы за вкладку "Будильник"
отвечал определённый класс к примеру alarmClockTab.
Помогите пожалуйста.
from PyQt5 import QtWidgets, QtCore
from PyQt5.QtWidgets import QApplication, QDialog, QTabWidget, QVBoxLayout
import sys
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(544, 447)
self.tabWidget = QtWidgets.QTabWidget(Dialog)
self.tabWidget.setGeometry(QtCore.QRect(0, 10, 551, 441))
self.tabWidget.setObjectName("tabWidget")
self.alarmClockTab = QtWidgets.QWidget()
self.alarmClockTab.setObjectName("alarmClockTab")
self.deleteButton = QtWidgets.QPushButton(self.alarmClockTab)
self.deleteButton.setGeometry(QtCore.QRect(490, 360, 41, 41))
self.deleteButton.setObjectName("deleteButton")
self.addButton = QtWidgets.QPushButton(self.alarmClockTab)
self.addButton.setGeometry(QtCore.QRect(440, 360, 41, 41))
self.addButton.setObjectName("addButton")
self.tableWidget = QtWidgets.QTableWidget(self.alarmClockTab)
self.tableWidget.setGeometry(QtCore.QRect(10, 10, 521, 341))
self.tableWidget.setObjectName("tableWidget")
self.tableWidget.setColumnCount(0)
self.tableWidget.setRowCount(0)
self.tabWidget.addTab(self.alarmClockTab, "")
self.watchTab = QtWidgets.QWidget()
self.watchTab.setObjectName("watchTab")
self.tabWidget.addTab(self.watchTab, "")
self.timerTab = QtWidgets.QWidget()
self.timerTab.setObjectName("timerTab")
self.tabWidget.addTab(self.timerTab, "")
self.stopWatchTab = QtWidgets.QWidget()
self.stopWatchTab.setObjectName("stopWatchTab")
self.tabWidget.addTab(self.stopWatchTab, "")
self.retranslateUi(Dialog)
self.tabWidget.setCurrentIndex(0)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "Будильник и часы"))
self.deleteButton.setText(_translate("Dialog", "-"))
self.addButton.setText(_translate("Dialog", "+"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.alarmClockTab), _translate("Dialog", "Будильник"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.watchTab), _translate("Dialog", "Часы"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.timerTab), _translate("Dialog", "Таймер"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.stopWatchTab), _translate("Dialog", "Секундомер"))
class Tab(QDialog):
def __init__(self):
super().__init__()
tabwidget = QTabWidget()
vbox = QVBoxLayout()
vbox.addWidget(tabwidget)
self.setLayout(vbox)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Tab()
ex.show()
sys.exit(app.exec())
введите сюда код
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Создайте другой класс, который наследуется от соответствующего виджета, и используйте созданный класс для его заполнения.
import sys
from PyQt5 import QtWidgets, QtCore, QtGui
from PyQt5.Qt import *
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(544, 447)
self.tabWidget = QtWidgets.QTabWidget(Dialog)
self.tabWidget.setGeometry(QtCore.QRect(0, 10, 551, 441))
self.tabWidget.setObjectName("tabWidget")
self.alarmClockTab = QtWidgets.QWidget()
self.alarmClockTab.setObjectName("alarmClockTab")
self.deleteButton = QtWidgets.QPushButton(self.alarmClockTab)
self.deleteButton.setGeometry(QtCore.QRect(490, 360, 41, 41))
self.deleteButton.setObjectName("deleteButton")
self.addButton = QtWidgets.QPushButton(self.alarmClockTab)
self.addButton.setGeometry(QtCore.QRect(440, 360, 41, 41))
self.addButton.setObjectName("addButton")
self.tableWidget = QtWidgets.QTableWidget(self.alarmClockTab)
self.tableWidget.setGeometry(QtCore.QRect(10, 10, 521, 341))
self.tableWidget.setObjectName("tableWidget")
self.tableWidget.setColumnCount(5)
self.tableWidget.setRowCount(0)
self.tabWidget.addTab(self.alarmClockTab, "")
self.watchTab = QtWidgets.QWidget()
self.watchTab.setObjectName("watchTab")
self.tabWidget.addTab(self.watchTab, "")
self.timerTab = QtWidgets.QWidget()
self.timerTab.setObjectName("timerTab")
self.tabWidget.addTab(self.timerTab, "")
self.stopWatchTab = QtWidgets.QWidget()
self.stopWatchTab.setObjectName("stopWatchTab")
self.tabWidget.addTab(self.stopWatchTab, "")
self.retranslateUi(Dialog)
self.tabWidget.setCurrentIndex(0)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "Будильник и часы"))
self.deleteButton.setText(_translate("Dialog", "-"))
self.addButton.setText(_translate("Dialog", "+"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.alarmClockTab), _translate("Dialog", "Будильник"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.watchTab), _translate("Dialog", "Часы"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.timerTab), _translate("Dialog", "Таймер"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.stopWatchTab), _translate("Dialog", "Секундомер"))
class Tab(QDialog, Ui_Dialog): # +++ , Ui_Dialog
def __init__(self):
super().__init__()
self.setupUi(self) # +++
# + vvv тут ваша логика vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
self.addButton.clicked.connect(self.add_row)
def add_row(self):
rowPosition = self.tableWidget.rowCount()
self.tableWidget.insertRow(rowPosition)
'''
tabwidget = QTabWidget()
vbox = QVBoxLayout()
vbox.addWidget(tabwidget)
self.setLayout(vbox)
'''
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Tab()
ex.show()
sys.exit(app.exec())
