Я использую pyqt5, и из того, что я прочитал, верхняя левая угловая ячейка должна создаваться автоматически.У меня есть это маленькое всплывающее окно, в котором я создаю таблицу и заполняю ее значениями из словаря:
class LimitTable(QWidget):
query = QtCore.pyqtSignal(dict)
def __init__(self, dic):
QWidget.__init__(self)
self.dic = dic
self.setup_ui()
self.setWindowTitle("Limit Table")
def setup_ui(self):
self.limit_table = QtWidgets.QTableWidget(self)
self.limit_table.setGeometry(QtCore.QRect(10, 40, 681, 81))
self.limit_table.setObjectName("limit_table")
row_names = ["Lower Limit", "Upper Limit"]
col_names = list(self.dic.keys())
self.limit_table.setRowCount(len(row_names))
self.limit_table.setColumnCount(len(self.dic.keys()))
self.limit_table.setHorizontalHeaderLabels(col_names)
helpers.add_header(self.limit_table, len(row_names),
row_names, "vertical")
helpers.add_header(self.limit_table, len(col_names), col_names)
for i, val in enumerate(self.dic.values()):
self.limit_table.setItem(0, i,
QTableWidgetItem("{:0.1e}".format(val[0])))
self.limit_table.setItem(1, i,
QTableWidgetItem("{:0.1e}".format(val[1])))
, где add_header просто
def add_header(tab_obj, count, name, hv="horizontal"):
"""Adds header objects to TableWidget.
Args:
- tab_obj (QTableWidget) : table object
- count (int) : number of cells
- name (str) : header name
- hv (str) : choose horizontal or vertical header
"""
tab_obj.setColumnCount(count)
for col in range(0, count):
item = QtWidgets.QTableWidgetItem()
if isinstance(name, dict):
item.setText(list(name.keys())[col])
if isinstance(name, list):
item.setText(name[col])
if hv == "horizontal":
tab_obj.setHorizontalHeaderItem(col, item)
adjust_header(tab_obj, count, "Stretch")
if hv == "vertical":
tab_obj.setVerticalHeaderItem(col, item)
return True
Так что в принципе это очень просто исогласно учебнику.Строки "setRowCount" и "setColumnCount" должны делать то, что я хочу.Но вместо этого я получаю это
Обновление 1
По-видимому, здесь есть угловая кнопка ...
self.limit_table.isCornerButtonEnabled()
возвращает True.Я также попытался специально установить его в True.Ничего не меняетсяКроме того, когда я использую QtDesigner или при создании любой другой таблицы, я получаю тот же результат: не удается отличить угловую кнопку от заголовка столбца или, другими словами, ячейка заголовка столбца первого столбца охватывает весь путь влевограницы стола.Кто-нибудь может относиться к этому?
Обновление 2
Мне до сих пор неясно, почему угловая кнопка не может рассматриваться как кнопка по умолчанию в моих таблицах.Однако, как правильно указали eyllanesc (спасибо, мужчина!), Угловая кнопка может быть отредактирована с помощью таблицы стилей.В pyqt это будет выглядеть примерно так:
self.limit_table.setCornerButtonEnabled(True)
self.limit_table.setStyleSheet("QTableCornerButton::section{border-width:
1px; border-color: #BABABA; border-style:solid;}")
, что приводит к следующему: