gpt4 book ai didi

python - 如何连接Qtoolbutton和QStackedWidget(两者都在同一框架中)

转载 作者:行者123 更新时间:2023-11-30 21:53:07 30 4
gpt4 key购买 nike

MainWindow

我创建了一个窗口,其中有 4 个不同的 QToolButton,并且它位于 QStackedWidget 之外。当我单击第一个 QToolButton(如图所示的余额查询)时,应显示余额查询的内容,其余 QToolButton 的内容也类似。两人同框。

我不知道如何连接。我正在学习PyQt5。我只是使用设计器,并且对 PyQt5 中的编码有一个非常基本的想法。

GitHub 存储库链接是:https://github.com/abhi7585/Bank-of-Braavos

最佳答案

由于您没有提供MRE那么我会从头开始提供一个解决方案。

解决方案是使用 QButtonGroup,其中添加与 id 关联的按钮,然后使用 buttonClicked 信号,该信号将发送按下的按钮的 id 信息,该信息应设置为 QStackedWidget 的 currentIndex。

import sys

from PyQt5 import QtCore, QtWidgets


class MainWindow(QtWidgets.QMainWindow):
def __init__(self, parent=None):
super().__init__(parent)

self.title_label = QtWidgets.QLabel(
"BANK OF BRAAVOS", alignment=QtCore.Qt.AlignCenter
)

self.balance_inquiry_button = QtWidgets.QToolButton(text="Balance Inquiry")
self.transaction_button = QtWidgets.QToolButton(text="Transaction")
self.balance_sheet_button = QtWidgets.QToolButton(text="Balance Sheet")
self.support_button = QtWidgets.QToolButton(text="Support")

self.stacked_widget = QtWidgets.QStackedWidget()

self.stacked_widget.addWidget(
QtWidgets.QLabel("Balance Inquiry", alignment=QtCore.Qt.AlignCenter)
)
self.stacked_widget.addWidget(
QtWidgets.QLabel("Transaction", alignment=QtCore.Qt.AlignCenter)
)
self.stacked_widget.addWidget(
QtWidgets.QLabel("Balance Sheet", alignment=QtCore.Qt.AlignCenter)
)
self.stacked_widget.addWidget(
QtWidgets.QLabel("Support", alignment=QtCore.Qt.AlignCenter)
)

central_widget = QtWidgets.QWidget()
self.setCentralWidget(central_widget)
lay = QtWidgets.QVBoxLayout(central_widget)
lay.addWidget(self.title_label)

hlay = QtWidgets.QHBoxLayout()
hlay.addWidget(self.balance_inquiry_button)
hlay.addWidget(self.transaction_button)
hlay.addWidget(self.balance_sheet_button)
hlay.addWidget(self.support_button)
lay.addLayout(hlay)
lay.addWidget(self.stacked_widget)

<b>self.group_button = QtWidgets.QButtonGroup()
for i, button in enumerate(
(
self.balance_inquiry_button,
self.transaction_button,
self.balance_sheet_button,
self.support_button,
)
):
self.group_button.addButton(button, i)

self.group_button.buttonClicked[int].connect(
self.stacked_widget.setCurrentIndex
)</b>

self.resize(640, 480)


if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
ex = MainWindow()
ex.show()
sys.exit(app.exec_())

关于python - 如何连接Qtoolbutton和QStackedWidget(两者都在同一框架中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59754663/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com