Python 3.x 有没有办法将定制的QGroupBox添加到任何小部件/布局中?
我已经通过Qt设计器创建了一个QMainWindow和一个定制的QGroupBox,并编译成.py文件 这是我的小部件层次结构:Python 3.x 有没有办法将定制的QGroupBox添加到任何小部件/布局中?,python-3.x,user-interface,pyqt5,qt5,Python 3.x,User Interface,Pyqt5,Qt5,我已经通过Qt设计器创建了一个QMainWindow和一个定制的QGroupBox,并编译成.py文件 这是我的小部件层次结构:QMainWindow->QStackedWidget->QScrollArea->QVBoxLayout->QGroupBox(es) 但是,当我试图将上面创建的定制QGroupBox(classUi_deck)添加到QVBoxLayout(属于classUi_main)时,它没有显示任何内容 这是我的代码: #main.py import sys from PyQt
QMainWindow->QStackedWidget->QScrollArea->QVBoxLayout->QGroupBox(es)代码>
但是,当我试图将上面创建的定制QGroupBox(classUi_deck
)添加到QVBoxLayout(属于classUi_main
)时,它没有显示任何内容
这是我的代码:
#main.py
import sys
from PyQt5 import QtCore, QtWidgets, QtGui
from main_ui import Ui_main
from deck_name import Ui_deck
class Main(QtWidgets.QMainWindow, Ui_main):
def __init__(self):
super().__init__()
self.setupUi(self)
groupbox = QtWidgets.QGroupBox(self.scroll_widget)
deck = Ui_deck()
deck.setupUi(groupbox)
self.scroll_layout.addWidget(groupbox)
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
main = QtWidgets.QMainWindow()
ui = Main()
ui.setupUi(main)
main.show()
sys.exit(app.exec_())
以下是输出:
它应该在窗口中有两个分组框您显示的是QtWidgets.QMainWindow
的实例,而不是Main
。尝试将main.py
的最后一部分更改为
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
main = Main()
main.show()
sys.exit(app.exec_())
#deck_name.py
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'deck_name.ui'
#
# Created by: PyQt5 UI code generator 5.15.0
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_deck(object):
def setupUi(self, deck):
deck.setObjectName("deck")
deck.resize(565, 200)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(deck.sizePolicy().hasHeightForWidth())
deck.setSizePolicy(sizePolicy)
deck.setMinimumSize(QtCore.QSize(0, 200))
deck.setWindowTitle("")
self.gridLayoutWidget = QtWidgets.QWidget(deck)
self.gridLayoutWidget.setGeometry(QtCore.QRect(0, 0, 561, 201))
self.gridLayoutWidget.setObjectName("gridLayoutWidget")
self.gridLayout = QtWidgets.QGridLayout(self.gridLayoutWidget)
self.gridLayout.setContentsMargins(0, 0, 0, 0)
self.gridLayout.setObjectName("gridLayout")
self.deck_name = QtWidgets.QLabel(self.gridLayoutWidget)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.deck_name.sizePolicy().hasHeightForWidth())
self.deck_name.setSizePolicy(sizePolicy)
self.deck_name.setMinimumSize(QtCore.QSize(0, 50))
font = QtGui.QFont()
font.setFamily("Arial")
font.setPointSize(13)
self.deck_name.setFont(font)
self.deck_name.setObjectName("deck_name")
self.gridLayout.addWidget(self.deck_name, 0, 0, 1, 1)
self.button = QtWidgets.QFrame(self.gridLayoutWidget)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.button.sizePolicy().hasHeightForWidth())
self.button.setSizePolicy(sizePolicy)
self.button.setMinimumSize(QtCore.QSize(0, 30))
self.button.setMaximumSize(QtCore.QSize(16777215, 50))
font = QtGui.QFont()
font.setFamily("Arial")
self.button.setFont(font)
self.button.setStyleSheet("QPushButton{\n"
" border-radius: 12px;\n"
"}")
self.button.setObjectName("button")
self.horizontalLayout = QtWidgets.QHBoxLayout(self.button)
self.horizontalLayout.setObjectName("horizontalLayout")
self.review = QtWidgets.QPushButton(self.button)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.review.sizePolicy().hasHeightForWidth())
self.review.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setFamily("Arial")
font.setPointSize(12)
self.review.setFont(font)
self.review.setStyleSheet("QPushButton#review{\n"
" background-color: rgb(132, 255, 16);\n"
"}\n"
"\n"
"QPushButton#review:hover{\n"
" background-color: rgb(125, 234, 0)\n"
"}\n"
"")
self.review.setObjectName("review")
self.horizontalLayout.addWidget(self.review)
self.flash = QtWidgets.QPushButton(self.button)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.flash.sizePolicy().hasHeightForWidth())
self.flash.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setFamily("Arial")
font.setPointSize(12)
self.flash.setFont(font)
self.flash.setStyleSheet("QPushButton#flash{\n"
" background-color:rgb(132, 255, 16);\n"
"}\n"
"\n"
"QPushButton#flash:hover{\n"
" background-color: rgb(125, 234, 0)\n"
"}\n"
"")
self.flash.setObjectName("flash")
self.horizontalLayout.addWidget(self.flash)
self.word_list = QtWidgets.QPushButton(self.button)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.word_list.sizePolicy().hasHeightForWidth())
self.word_list.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setFamily("Arial")
font.setPointSize(12)
self.word_list.setFont(font)
self.word_list.setStyleSheet("QPushButton#word_list{\n"
" background-color:rgb(132, 255, 16);\n"
"}\n"
"\n"
"QPushButton#word_list:hover{\n"
" background-color: rgb(125, 234, 0)\n"
"}\n"
"")
self.word_list.setObjectName("word_list")
self.horizontalLayout.addWidget(self.word_list)
self.gridLayout.addWidget(self.button, 1, 0, 1, 1)
self.dropdown = QtWidgets.QToolButton(self.gridLayoutWidget)
font = QtGui.QFont()
font.setPointSize(10)
self.dropdown.setFont(font)
self.dropdown.setStyleSheet("border: none")
self.dropdown.setObjectName("dropdown")
self.gridLayout.addWidget(self.dropdown, 0, 1, 1, 1)
self.retranslateUi(deck)
QtCore.QMetaObject.connectSlotsByName(deck)
def retranslateUi(self, deck):
_translate = QtCore.QCoreApplication.translate
self.deck_name.setText(_translate("deck", "Deck_name"))
self.review.setText(_translate("deck", "Review"))
self.flash.setText(_translate("deck", "Flashcards mode"))
self.word_list.setText(_translate("deck", "Word list mode"))
self.dropdown.setText(_translate("deck", "..."))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
main = Main()
main.show()
sys.exit(app.exec_())