为 QTableWidget 的列分配不同的宽度
问题描述
我正在 QT Designer 在 pyqt5 中开发一个小界面,其中包括一个 QTableWidget 但我想分配不同的列的宽度,我找到了谈论相同的主题,但我不知道在哪里插入他们提供的代码,我不知道是不是因为版本,我很新在 QT 设计器中.
I'm developing a small interface in pyqt5 from QT Designer, this includes a QTableWidget but I want to assign different widths to the columns, I have found topics that talk about the same but I don't know exactly where to insert the code they provide, I don't know if it's because of the version, I'm quite new in QT Designer.
我会留下我提到的问题.
PyQt:如何设置不同的标题大小对于单个标题?
PyQt 设置列宽
我的文件结构如下:
app.py:存储应用程序的功能
SGS.py: .ui文件转换成.py
SGS.ui
我将生成表头的 SGS.py 部分保留,因为它的价值.
I leave the SGS.py part where the table headers are generated for what it's worth.
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)))
解决方案
从 ui 生成的 python 文件永远不要被编辑.将其视为用于创建"接口的资源文件(如图像或 json 文件).您无法通过 Designer 完成的所有操作都必须在您的应用程序代码文件中实现.
The python file generated from the ui should never be edited. Consider it as a resource file (like an image or a json file) that is used to "create" the interface. Everything that you can't do from Designer you will have to implement in your application code files.
每当模型应用于项目视图时,您都可以设置大小(或调整大小模式,例如自动调整大小,或拉伸"到可用宽度).由于您使用的是 QTableWidget(它具有其内部私有模型),因此您可以在界面中创建小部件后立即执行此操作,即在 setupUi
(或 loadUi
) 如果使用设计器文件.
You can set the size (or resize mode, for example automatic resizing, or the "stretching" to the available width) whenever a model is applied to the item view. Since you're using a QTableWidget (which has its internal private model), you can do that as soon as the widget is created in the interface, which is right after setupUi
(or loadUi
) if using a designer file.
为了设置部分的大小和行为,您需要访问表格标题:列的水平标题,行的垂直标题.
In order to set the size and behavior of the sections, you need to access the table headers: the horizontal one for the columns, the vertical for the rows.
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)
请注意,如果您删除一列并在同一位置插入另一列,则需要再次设置其部分大小或模式.
Note that if you remove a column and insert another one in the same place, you'll need to set its section size or mode once again.
相关文章