gpt4 book ai didi

python - 在 PyQT5 中创建自定义小部件

转载 作者:太空狗 更新时间:2023-10-30 02:16:24 25 4
gpt4 key购买 nike

我想知道如何在 pyqt 中创建自定义小部件。我见过许多不同的 C++ 示例,以及几个非描述性的 pyqt 示例,但没有真正解释如何去做和实现它。特别是没有基本上不只是修改后的 qt-designer 输出的示例,而且我是从头开始编写我的代码,所以这不是很有帮助。

到目前为止,我能找到的最好的例子是 basically just someone modifying qt-designer code并没有真正解释它在做什么。

谁能告诉我如何创建自定义小部件的示例吗?

编辑:我正在尝试创建一个带有嵌入式 QStackedWidget 的小部件,以及底部的按钮来循环页面。

我还计划为每个页面制作一个单独的小部件,但考虑到我实际上无法完成第一步,我想当我到达它时我会跨过那座桥。

最佳答案

下面展示了如何实现一个带有2个按钮的QStackedWidget,基本思路是布局设计,为此我们分析一个QVBoxLayout必须是placed 用于放置 QStackedWidget 和另一个布局,第二个布局将是一个 QHBoxLayout 以包含按钮。然后我们连接处理页面之间转换的信号。同样在这个例子中,我创建了 3 种类型的小部件,它们将放置在每个页面上。

from PyQt5.QtWidgets import *


class Widget1(QWidget):
def __init__(self, parent=None):
QWidget.__init__(self, parent=parent)
lay = QVBoxLayout(self)
for i in range(4):
lay.addWidget(QPushButton("{}".format(i)))

class Widget2(QWidget):
def __init__(self, parent=None):
QWidget.__init__(self, parent=parent)
lay = QVBoxLayout(self)
for i in range(4):
lay.addWidget(QLineEdit("{}".format(i)))

class Widget3(QWidget):
def __init__(self, parent=None):
QWidget.__init__(self, parent=parent)
lay = QVBoxLayout(self)
for i in range(4):
lay.addWidget(QRadioButton("{}".format(i)))

class stackedExample(QWidget):
def __init__(self, parent=None):
QWidget.__init__(self, parent=parent)
lay = QVBoxLayout(self)
self.Stack = QStackedWidget()
self.Stack.addWidget(Widget1())
self.Stack.addWidget(Widget2())
self.Stack.addWidget(Widget3())

btnNext = QPushButton("Next")
btnNext.clicked.connect(self.onNext)
btnPrevious = QPushButton("Previous")
btnPrevious.clicked.connect(self.onPrevious)
btnLayout = QHBoxLayout()
btnLayout.addWidget(btnPrevious)
btnLayout.addWidget(btnNext)

lay.addWidget(self.Stack)
lay.addLayout(btnLayout)

def onNext(self):
self.Stack.setCurrentIndex((self.Stack.currentIndex()+1) % 3)

def onPrevious(self):
self.Stack.setCurrentIndex((self.Stack.currentIndex()-1) % 3)


if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
w = stackedExample()
w.show()
sys.exit(app.exec_())

enter image description here

enter image description here

enter image description here

关于python - 在 PyQT5 中创建自定义小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44380202/

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