添加内容后调整小部件的大小
Resize widget after contents are added to it
我有一个 QComboBox
在用户启动程序时开始为空白。稍后,内容被添加到小部件,包括每个索引的图标。如果我在程序启动前添加内容,那么 QComboBox
的图标和大小就完美了。但是如果在程序已经初始化之后添加,那么图标会被裁剪并且尺寸不完美。
from PySide2 import QtWidgets, QtGui, QtCore
class MyWindow(QtWidgets.QWidget):
def __init__(self):
super(self.__class__, self).__init__()
self.setMinimumSize(500,400)
self.layout = QtWidgets.QVBoxLayout(self)
self.setLayout(self.layout)
self.addNow = False
self.combo = QtWidgets.QComboBox()
self.btn = QtWidgets.QPushButton('Add Items')
self.combo.setStyleSheet('font-size: 20px')
self.layout.addWidget(self.combo)
self.layout.addWidget(self.btn)
self.items = ['hi', 'hello', 'goodbye', 'nice day', 'bonjour']
self.icon = QtGui.QPixmap('checker.png')
self.combo.setIconSize(QtCore.QSize(40,40))
if self.addNow:
self.addItems()
self.btn.setDisabled(True)
self.btn.clicked.connect(self.addItems)
def addItems(self):
for item in self.items:
self.combo.addItem(self.icon, item)
import sys
app = QtWidgets.QApplication(sys.argv)
mywin = MyWindow()
mywin.show()
sys.exit(app.exec_())
我尝试了几次 sizePolicy
,但都无法调整图标大小。
这是一个照片示例,我可以硬编码 QComboBox 的大小,但理想情况下我希望 QT 在添加内容后调整它的大小。
我有两种方法可以解决这个问题,但它们并不理想。
- 添加新项目后调用
self.combo.setIconSize(QtCore.QSize(40,40))
。这会导致小部件在扩展时不会 "pushing" 相同布局中的其他小部件。
或
- 设置
QComboBox
的字体大小与像素图的大小相同。添加项目,然后重置样式表。非常hacky。
self.combo.setStyleSheet('font-size: 40px')
self.addItems()
self.combo.setStyleSheet('font-size: 20px')
我有一个 QComboBox
在用户启动程序时开始为空白。稍后,内容被添加到小部件,包括每个索引的图标。如果我在程序启动前添加内容,那么 QComboBox
的图标和大小就完美了。但是如果在程序已经初始化之后添加,那么图标会被裁剪并且尺寸不完美。
from PySide2 import QtWidgets, QtGui, QtCore
class MyWindow(QtWidgets.QWidget):
def __init__(self):
super(self.__class__, self).__init__()
self.setMinimumSize(500,400)
self.layout = QtWidgets.QVBoxLayout(self)
self.setLayout(self.layout)
self.addNow = False
self.combo = QtWidgets.QComboBox()
self.btn = QtWidgets.QPushButton('Add Items')
self.combo.setStyleSheet('font-size: 20px')
self.layout.addWidget(self.combo)
self.layout.addWidget(self.btn)
self.items = ['hi', 'hello', 'goodbye', 'nice day', 'bonjour']
self.icon = QtGui.QPixmap('checker.png')
self.combo.setIconSize(QtCore.QSize(40,40))
if self.addNow:
self.addItems()
self.btn.setDisabled(True)
self.btn.clicked.connect(self.addItems)
def addItems(self):
for item in self.items:
self.combo.addItem(self.icon, item)
import sys
app = QtWidgets.QApplication(sys.argv)
mywin = MyWindow()
mywin.show()
sys.exit(app.exec_())
我尝试了几次 sizePolicy
,但都无法调整图标大小。
这是一个照片示例,我可以硬编码 QComboBox 的大小,但理想情况下我希望 QT 在添加内容后调整它的大小。
我有两种方法可以解决这个问题,但它们并不理想。
- 添加新项目后调用
self.combo.setIconSize(QtCore.QSize(40,40))
。这会导致小部件在扩展时不会 "pushing" 相同布局中的其他小部件。
或
- 设置
QComboBox
的字体大小与像素图的大小相同。添加项目,然后重置样式表。非常hacky。
self.combo.setStyleSheet('font-size: 40px')
self.addItems()
self.combo.setStyleSheet('font-size: 20px')