为一个QTableWidget的列分配不同宽度

2024-05-19 08:37:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在QT Designerpyqt5中开发一个小界面,其中包括一个QTableWidget,但我想为列指定不同的宽度,我找到了谈论相同的主题,但我不知道在哪里插入它们提供的代码,我不知道是不是因为版本的原因,我对QT Designer还是个新手

我把我提到的问题留给你,看它值多少钱。

PyQt:How do i set different header sizes for individual headers?

PyQt Set column widths

我的文件结构如下:

app.py: Stores the functionalities of the application

SGS.py: The code that is generated after converting the .ui file to .py

SGS.ui

我把生成表头的SGS.py部分留在这里

item = self.TableDocs.horizontalHeaderItem(0)
item.setText(_translate("MainWindow", "IDsystem"))
item = self.TableDocs.horizontalHeaderItem(2)
item.setText(_translate("MainWindow", "IDpeople"))
item = self.TableDocs.horizontalHeaderItem(3)
item.setText(_translate("MainWindow", "Work"))
item = self.TableDocs.horizontalHeaderItem(4)
item.setText(_translate("MainWindow", "Hours"))

我还留下了填充表格的代码

result = Cur.execute("SELECT idsystem,IDpeople,work,hours FROM workers")
self.TableDocs.setRowCount(0)

for row_number, row_data in enumerate(result):
    self.TableDocs.insertRow(row_number)
    for column_number, data in enumerate(row_data):
        self.TableDocs.setItem(row_number, column_number, QtWidgets.QTableWidgetItem(str(data)))

Tags: thepyselfnumberfordatacolumnitem
1条回答
网友
1楼 · 发布于 2024-05-19 08:37:09

从ui生成的python文件应该从不被编辑。将其视为用于“创建”接口的资源文件(如图像或json文件)。在设计器中做不到的所有事情都必须在应用程序代码文件中实现

每当模型应用于项目视图时,可以设置大小(或调整大小模式,例如自动调整大小,或将“拉伸”设置为可用宽度)。因为您使用的是QTableWidget(它有其内部私有模型),所以只要在接口中创建了小部件,就可以这样做,如果使用设计器文件,这个接口就在setupUi(或者loadUi)之后

为了设置节的大小和行为,您需要访问表标题:水平的用于列,垂直的用于行

class MyWindow(QtWidgets.QMainWindow, Ui_MainWindow):
    def __init__(self):
        super(MyWindow, self).__init__()
        self.setupUi(self)

        horizontalHeader = self.TableDocs.horizontalHeader()
        # resize the first column to 100 pixels
        horizontalHeader.resizeSection(0, 100)
        # adjust the second column to its contents
        horizontalHeader.setSectionResizeMode(
            1, QtWidgets.QHeaderView.ResizeToContents)
        # adapt the third column to fill all available space
        horizontalHeader.setSectionResizeMode(
            2, QtWidgets.QHeaderView.Stretch)

请注意,如果删除一列并在同一位置插入另一列,则需要再次设置其节大小或模式

相关问题 更多 >

    热门问题