gpt4 book ai didi

python - 在 PyQt5 中以美观的方式对按钮进行分组

转载 作者:行者123 更新时间:2023-12-01 01:41:33 26 4
gpt4 key购买 nike

我想做这样的事情:

enter image description here

我无法找到任何方法来对这样的按钮进行分组。即,将它们包围在矩形中,并将“标题”放置到“按钮部分”。

在 PyQt5 中可以做到这一点吗?

最佳答案

您可以在 QToolButtonQLabel 旁边使用 QGroupBox:

import sys
from PyQt5 import QtCore, QtGui, QtWidgets

data = [{
"title": " Y Axis Variables",
"buttons": [{
"text": "Add/Quit/Modify",
"path_icon": "Add.png"
},
{
"text": "Calculate Var",
"path_icon": "calculate.png"
},
{
"text": "Delete Cal Var",
"path_icon": "delete.png"
}
]
},
{
"title": "Project",
"buttons": [{
"text": "Save",
"path_icon": "save.png"
},
{
"text": "Add Tab",
"path_icon": "add.png"
}
]
}
]


class ToolButton(QtWidgets.QWidget):
def __init__(self, text, path_icon, parent=None):
super(ToolButton, self).__init__(parent)
lay = QtWidgets.QVBoxLayout(self)
toolButton = QtWidgets.QToolButton()
toolButton.setIcon(QtGui.QIcon(path_icon))
toolButton.setIconSize(QtCore.QSize(64, 64))
label = QtWidgets.QLabel(text)
lay.addWidget(toolButton, 0, QtCore.Qt.AlignCenter)
lay.addWidget(label, 0, QtCore.Qt.AlignCenter)
lay.setContentsMargins(0, 0, 0, 0)


class GroupButton(QtWidgets.QGroupBox):
def __init__(self, info, parent=None):
super(GroupButton, self).__init__(parent)
title = info["title"]
self.setTitle(title)
hlay = QtWidgets.QHBoxLayout(self)
for info_button in info["buttons"]:
text = info_button["text"]
path_icon = info_button["path_icon"]
btn = ToolButton(text, path_icon)
hlay.addWidget(btn)
hlay.setContentsMargins(5, 5, 5, 5)
self.setFixedSize(self.sizeHint())

class Widget(QtWidgets.QWidget):
def __init__(self, parent=None):
super(Widget, self).__init__(parent)
vlay = QtWidgets.QVBoxLayout(self)
hlay = QtWidgets.QHBoxLayout()
for val in data:
gb = GroupButton(val)
hlay.addWidget(gb)
hlay.addStretch()
vlay.addLayout(hlay)
vlay.addStretch()

if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
w = Widget()
w.resize(640, 480)
w.show()
sys.exit(app.exec_())

enter image description here

关于python - 在 PyQt5 中以美观的方式对按钮进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51829622/

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