【发布时间】:2018-02-04 09:11:32
【问题描述】:
我想要一个包含 2 或 3 列的表格,其中的行在 PyQt 中显示图像和文本并排显示(我使用的是 python3.5 和 PyQt 5)。首先,我选择了 QListWidget,但它仅限于一列。我发现 QTableWidget 是最好的方法。但是当我在表格中放置一个单元格的图像时,该单元格的文本没有显示在它的底部。如何使单元格在适当的位置显示文本和图像? 这是我的代码:
self.main_table = QTableWidget(self)
self.main_table.setGeometry(QRect(20, 140, 600, 330))
sizePolicy = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.main_table.sizePolicy().hasHeightForWidth())
self.main_table.setSizePolicy(sizePolicy)
self.main_table.setLayoutDirection(Qt.LeftToRight)
self.main_table.setLocale(QLocale(QLocale.Persian, QLocale.Iran))
self.main_table.setInputMethodHints(Qt.ImhNone)
self.main_table.setFrameShape(QFrame.NoFrame)
self.main_table.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
self.main_table.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
self.main_table.setEditTriggers(QAbstractItemView.NoEditTriggers)
self.main_table.setTabKeyNavigation(False)
self.main_table.setShowGrid(False)
self.main_table.setCornerButtonEnabled(False)
self.main_table.setIconSize(QSize(210,150))
self.main_table.setRowCount(2)
self.main_table.setColumnCount(2)
self.main_table.setObjectName("main_table")
self.main_table.horizontalHeader().setVisible(False)
self.main_table.horizontalHeader().setHighlightSections(False)
self.main_table.verticalHeader().setVisible(False)
self.main_table.verticalHeader().setHighlightSections(False)
self.main_table.horizontalHeader().setDefaultSectionSize(250)
self.main_table.verticalHeader().setDefaultSectionSize(250)
self.item = QTableWidgetItem(QIcon('content/img/food.png'),'Food')
self.main_table.setItem(0 , 0, self.item)
【问题讨论】:
-
您可以指定您希望图像和文本在单元格中的显示方式
-
@eyllanesc 怎么做?
-
例如图像相对于单元格和相对于文本的大小,它的位置,你希望它是一个图标,或者占据整个单元格,文本居中或与左侧对齐。有很多变种
-
@eyllanesc 为 QIcon 选择的任何大小,文本位于右侧,其位置不会改变。
-
这就是你想要的吗?
标签: python qt pyqt pyqt5 qtablewidget