为 QTableWidget 的列分配不同的宽度
Assign different widths to columns of a QTableWidget
我正在 QT Designer 的 pyqt5 中开发一个小界面,其中包括一个 QTableWidget 但我想 为列分配不同的宽度 ,我找到了谈论相同的主题,但我不知道在哪里插入他们提供的代码,我不知道不知道是不是版本的问题,我是QT Designer.
新手
我留下我提到的问题是为了它的价值。
PyQt:How do i set different header sizes for individual headers?
我的文件结构如下:
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 生成 table headers 的部分 的价值。
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"))
我也留下了我用来填充table
的代码
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 文件应该永远不会 被编辑。将其视为用于 "create" 界面的资源文件(如图像或 json 文件)。您无法在 Designer 中执行的所有操作都必须在您的应用程序代码文件中实现。
只要将模型应用于项目视图,您就可以设置大小(或调整大小模式,例如自动调整大小,或 "stretching" 到可用宽度)。由于您使用的是 QTableWidget(它有其内部私有模型),您可以在界面中创建小部件后立即执行此操作,如果使用,它就在 setupUi
(或 loadUi
)之后设计器文件。
为了设置部分的大小和行为,您需要访问 table headers:水平的用于列,垂直的用于行。
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)
请注意,如果删除一列并在同一位置插入另一列,则需要再次设置其部分大小或模式。
我正在 QT Designer 的 pyqt5 中开发一个小界面,其中包括一个 QTableWidget 但我想 为列分配不同的宽度 ,我找到了谈论相同的主题,但我不知道在哪里插入他们提供的代码,我不知道不知道是不是版本的问题,我是QT Designer.
新手我留下我提到的问题是为了它的价值。
PyQt:How do i set different header sizes for individual headers?
我的文件结构如下:
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 生成 table headers 的部分 的价值。
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"))
我也留下了我用来填充table
的代码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 文件应该永远不会 被编辑。将其视为用于 "create" 界面的资源文件(如图像或 json 文件)。您无法在 Designer 中执行的所有操作都必须在您的应用程序代码文件中实现。
只要将模型应用于项目视图,您就可以设置大小(或调整大小模式,例如自动调整大小,或 "stretching" 到可用宽度)。由于您使用的是 QTableWidget(它有其内部私有模型),您可以在界面中创建小部件后立即执行此操作,如果使用,它就在 setupUi
(或 loadUi
)之后设计器文件。
为了设置部分的大小和行为,您需要访问 table headers:水平的用于列,垂直的用于行。
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)
请注意,如果删除一列并在同一位置插入另一列,则需要再次设置其部分大小或模式。