pyqt5 在QComboBox()中创建每个单独的button按钮,点击每个按钮跳转到不同的界面,并显示新界面
时间: 2024-03-04 18:48:45 浏览: 83
可以使用QComboBox中的activated信号来实现单击下拉框中的选项时跳转到不同的界面。具体实现步骤如下:
1. 在初始化函数中创建QComboBox,并添加选项。
```
self.comboBox = QComboBox(self)
self.comboBox.addItem("Option1")
self.comboBox.addItem("Option2")
self.comboBox.addItem("Option3")
```
2. 为comboBox的activated信号连接槽函数,用于处理选项的跳转。
```
self.comboBox.activated[str].connect(self.onActivated)
```
3. 实现onActivated槽函数,根据选项的不同跳转到不同的界面。
```
def onActivated(self, text):
if text == "Option1":
self.stackedWidget.setCurrentIndex(0)
elif text == "Option2":
self.stackedWidget.setCurrentIndex(1)
elif text == "Option3":
self.stackedWidget.setCurrentIndex(2)
```
其中,self.stackedWidget是一个QStackedWidget,用于显示不同的界面。setCurrentIndex()函数用于设置当前显示的界面,其参数为界面的索引值。
4. 在每个界面中添加返回按钮,用于返回到主界面。
```
self.pushButton_back = QtWidgets.QPushButton(self)
self.pushButton_back.setGeometry(QtCore.QRect(10, 10, 75, 23))
self.pushButton_back.setObjectName("pushButton_back")
self.pushButton_back.setText("Back")
self.pushButton_back.clicked.connect(self.goBack)
```
其中,self.goBack()函数用于返回到主界面。
完整代码如下:
```
from PyQt5.QtWidgets import QApplication, QMainWindow, QComboBox, QStackedWidget, QWidget, QPushButton
from PyQt5 import QtCore, QtGui
import sys
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 创建QComboBox
self.comboBox = QComboBox(self)
self.comboBox.addItem("Option1")
self.comboBox.addItem("Option2")
self.comboBox.addItem("Option3")
self.comboBox.setGeometry(QtCore.QRect(10, 10, 100, 20))
self.comboBox.activated[str].connect(self.onActivated)
# 创建QStackedWidget
self.stackedWidget = QStackedWidget(self)
self.stackedWidget.setGeometry(QtCore.QRect(10, 40, 280, 200))
# 创建界面1
self.widget1 = QWidget()
self.pushButton_back1 = QPushButton(self.widget1)
self.pushButton_back1.setGeometry(QtCore.QRect(10, 10, 75, 23))
self.pushButton_back1.setObjectName("pushButton_back1")
self.pushButton_back1.setText("Back")
self.pushButton_back1.clicked.connect(self.goBack)
self.stackedWidget.addWidget(self.widget1)
# 创建界面2
self.widget2 = QWidget()
self.pushButton_back2 = QPushButton(self.widget2)
self.pushButton_back2.setGeometry(QtCore.QRect(10, 10, 75, 23))
self.pushButton_back2.setObjectName("pushButton_back2")
self.pushButton_back2.setText("Back")
self.pushButton_back2.clicked.connect(self.goBack)
self.stackedWidget.addWidget(self.widget2)
# 创建界面3
self.widget3 = QWidget()
self.pushButton_back3 = QPushButton(self.widget3)
self.pushButton_back3.setGeometry(QtCore.QRect(10, 10, 75, 23))
self.pushButton_back3.setObjectName("pushButton_back3")
self.pushButton_back3.setText("Back")
self.pushButton_back3.clicked.connect(self.goBack)
self.stackedWidget.addWidget(self.widget3)
self.setGeometry(100, 100, 300, 250)
self.setWindowTitle("QComboBox Example")
def onActivated(self, text):
if text == "Option1":
self.stackedWidget.setCurrentIndex(0)
elif text == "Option2":
self.stackedWidget.setCurrentIndex(1)
elif text == "Option3":
self.stackedWidget.setCurrentIndex(2)
def goBack(self):
self.stackedWidget.setCurrentIndex(0)
if __name__ == '__main__':
app = QApplication(sys.argv)
main_window = MainWindow()
main_window.show()
sys.exit(app.exec_())
```
运行代码,可以看到下拉框中的选项,单击每个选项可以跳转到不同的界面,并显示该界面的返回按钮,单击返回按钮可以返回到主界面。
阅读全文