为QTableWidget的列分配不同的宽度

时间:2019-12-16 12:33:54

标签: python python-3.x pyqt5 qt-designer qtablewidget

我正在通过 QT Designer pyqt5 中开发一个小型界面,其中包括一个 QTableWidget ,但我想分配其他界面的宽度,我已经找到了相同的主题,但是我不知道确切地在哪里插入它们提供的代码,也不知道是否是因为版本,我很新在 QT Designer 中。

我留下我提到的有关其价值的问题。

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

PyQt Set column widths

我的文件结构如下:

  

app.py::存储应用程序的功能

     

SGS.py::将 .ui 文件转换为 .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)))

1 个答案:

答案 0 :(得分:2)

永远不要编辑从ui生成的python文件。将其视为用于“创建”接口的资源文件(例如图像或json文件)。您无法在Designer中执行的所有操作都必须在应用程序代码文件中实现。

每当将模型应用于项目视图时,就可以设置大小(或调整大小模式,例如自动调整大小,或将“拉伸”设置为可用宽度)。由于您使用的是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)

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