напиши приложение на python используя pyqt. В окне приложения должно быть три вкладки, на каждой вкладке три кнопки, при нажатии на кнопку её название должно выводиться в окне приложения
python
from PyQt5.QtWidgets import QMainWindow, QApplication
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("My Application")
Теперь добавим в окно три вкладки. Для этого воспользуемся классом `QTabWidget`:
python
from PyQt5.QtWidgets import QMainWindow, QApplication, QTabWidget
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("My Application")
self.tabs = QTabWidget()
self.setCentralWidget(self.tabs)
self.tab1 = QWidget()
self.tab2 = QWidget()
self.tab3 = QWidget()
self.tabs.addTab(self.tab1, "Tab 1")
self.tabs.addTab(self.tab2, "Tab 2")
self.tabs.addTab(self.tab3, "Tab 3")
Теперь нужно добавить на каждую вкладку по три кнопки. Используем класс `QPushButton`:
python
from PyQt5.QtWidgets import QMainWindow, QApplication, QTabWidget, QWidget, QPushButton, QVBoxLayout
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("My Application")
self.tabs = QTabWidget()
self.setCentralWidget(self.tabs)
self.tab1 = QWidget()
self.tab2 = QWidget()
self.tab3 = QWidget()
self.tabs.addTab(self.tab1, "Tab 1")
self.tabs.addTab(self.tab2, "Tab 2")
self.tabs.addTab(self.tab3, "Tab 3")
self.tab1_button1 = QPushButton("Button 1")
self.tab1_button2 = QPushButton("Button 2")
self.tab1_button3 = QPushButton("Button 3")
self.tab2_button1 = QPushButton("Button 1")
self.tab2_button2 = QPushButton("Button 2")
self.tab2_button3 = QPushButton("Button 3")
self.tab3_button1 = QPushButton("Button 1")
self.tab3_button2 = QPushButton("Button 2")
self.tab3_button3 = QPushButton("Button 3")
layout1 = QVBoxLayout()
layout1.addWidget(self.tab1_button1)
layout1.addWidget(self.tab1_button2)
layout1.addWidget(self.tab1_button3)
layout2 = QVBoxLayout()
layout2.addWidget(self.tab2_button1)
layout2.addWidget(self.tab2_button2)
layout2.addWidget(self.tab2_button3)
layout3 = QVBoxLayout()
layout3.addWidget(self.tab3_button1)
layout3.addWidget(self.tab3_button2)
layout3.addWidget(self.tab3_button3)
self.tab1.setLayout(layout1)
self.tab2.setLayout(layout2)
self.tab3.setLayout(layout3)
Наконец, нужно добавить обработчик событий для каждой кнопки, чтобы при нажатии на неё выводилось её название в окне приложения:
python
from PyQt5.QtWidgets import QMainWindow, QApplication, QTabWidget, QWidget, QPushButton, QVBoxLayout, QLabel
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("My Application")
self.tabs = QTabWidget()
self.setCentralWidget(self.tabs)
self.tab1 = QWidget()
self.tab2 = QWidget()
self.tab3 = QWidget()
self.tabs.addTab(self.tab1, "Tab 1")
self.tabs.addTab(self.tab2, "Tab 2")
self.tabs.addTab(self.tab3, "Tab 3")
self.tab1_button1 = QPushButton("Button 1")
self.tab1_button2 = QPushButton("Button 2")
self.tab1_button3 = QPushButton("Button 3")
self.tab2_button1 = QPushButton("Button 1")
self.tab2_button2 = QPushButton("Button 2")
self.tab2_button3 = QPushButton("Button 3")
self.tab3_button1 = QPushButton("Button 1")
self.tab3_button2 = QPushButton("Button 2")
self.tab3_button3 = QPushButton("Button 3")
layout1 = QVBoxLayout()
layout1.addWidget(self.tab1_button1)
layout1.addWidget(self.tab1_button2)
layout1.addWidget(self.tab1_button3)
layout2 = QVBoxLayout()
layout2.addWidget(self.tab2_button1)
layout2.addWidget(self.tab2_button2)
layout2.addWidget(self.tab2_button3)
layout3 = QVBoxLayout()
layout3.addWidget(self.tab3_button1)
layout3.addWidget(self.tab3_button2)
layout3.addWidget(self.tab3_button3)
self.tab1.setLayout(layout1)
self.tab2.setLayout(layout2)
self.tab3.setLayout(layout3)
self.label = QLabel(self)
self.label.setGeometry(10, 10, 300, 50)
self.tab1_button1.clicked.connect(lambda: self.label.setText(self.tab1_button1.text()))
self.tab1_button2.clicked.connect(lambda: self.label.setText(self.tab1_button2.text()))
self.tab1_button3.clicked.connect(lambda: self.label.setText(self.tab1_button3.text()))
self.tab2_button1.clicked.connect(lambda: self.label.setText(self.tab2_button1.text()))
self.tab2_button2.clicked.connect(lambda: self.label.setText(self.tab2_button2.text()))
self.tab2_button3.clicked.connect(lambda: self.label.setText(self.tab2_button3.text()))
self.tab3_button1.clicked.connect(lambda: self.label.setText(self.tab3_button1.text()))
self.tab3_button2.clicked.connect(lambda: self.label.setText(self.tab3_button2.text()))
self.tab3_button3.clicked.connect(lambda: self.label.setText(self.tab3_button3.text()))
Теперь просто запускаем приложение:
python
if __name__ == "__main__":
app = QApplication([])
window = MainWindow()
window.show()
app.exec_()
Готовое приложение с тремя вкладками и по три кнопки на каждой, при нажатии на которые выводится их название в окне приложения, выглядит следующим образом:
![pyqt_app.png](pyqt_app.png)Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет