Pyqt的QTableWidget組件的使用
QTableWidget
是 PyQt6 中的一個表格控件,用于顯示和編輯二維表格數(shù)據(jù)。它繼承自 QTableView
,提供了更簡單的方式來處理表格數(shù)據(jù),適合用于需要展示結(jié)構(gòu)化數(shù)據(jù)的場景。
1. 常用方法
1.1 構(gòu)造函數(shù)
QTableWidget(parent: QWidget = None)
:創(chuàng)建一個空的表格控件。QTableWidget(rows: int, columns: int, parent: QWidget = None)
:創(chuàng)建一個指定行數(shù)和列數(shù)的表格控件。
1.2 設(shè)置行列數(shù)
setRowCount(rows: int)
:設(shè)置表格的行數(shù)。setColumnCount(columns: int)
:設(shè)置表格的列數(shù)。rowCount() -> int
:獲取表格的行數(shù)。columnCount() -> int
:獲取表格的列數(shù)。
1.3 設(shè)置表頭
setHorizontalHeaderLabels(labels: List[str])
:設(shè)置水平表頭的標(biāo)簽。setVerticalHeaderLabels(labels: List[str])
:設(shè)置垂直表頭的標(biāo)簽。horizontalHeader() -> QHeaderView
:獲取水平表頭對象。verticalHeader() -> QHeaderView
:獲取垂直表頭對象。
1.4 設(shè)置單元格內(nèi)容
setItem(row: int, column: int, item: QTableWidgetItem)
:設(shè)置指定單元格的內(nèi)容。item(row: int, column: int) -> QTableWidgetItem
:獲取指定單元格的內(nèi)容。takeItem(row: int, column: int) -> QTableWidgetItem
:移除指定單元格的內(nèi)容并返回。
1.5 設(shè)置單元格屬性
setCellWidget(row: int, column: int, widget: QWidget)
:在指定單元格中放置一個控件(如按鈕、下拉框等)。cellWidget(row: int, column: int) -> QWidget
:獲取指定單元格中的控件。setSpan(row: int, column: int, rowSpan: int, columnSpan: int)
:合并單元格。
1.6 選擇模式
setSelectionMode(mode: QAbstractItemView.SelectionMode)
:設(shè)置選擇模式(如單選、多選等)。setSelectionBehavior(behavior: QAbstractItemView.SelectionBehavior)
:設(shè)置選擇行為(如選擇行、選擇列等)。
1.7 信號
cellChanged(row: int, column: int)
:當(dāng)單元格內(nèi)容發(fā)生變化時觸發(fā)。cellClicked(row: int, column: int)
:當(dāng)單元格被點(diǎn)擊時觸發(fā)。cellDoubleClicked(row: int, column: int)
:當(dāng)單元格被雙擊時觸發(fā)。
2. 例子
import os import sys import webbrowser import qt_material from PyQt6.QtWidgets import * from PyQt6.QtCore import * class Window(QWidget): def __init__(self): super(Window, self).__init__() self.resize(400, 300) self.init_widget() self.init_signal() self.init_getdata() self.init_layout() def init_widget(self): # tablewidget self.table = QTableWidget() self.table.setColumnCount(2) self.table.setHorizontalHeaderLabels(['網(wǎng)站', 'Url']) self.table.horizontalHeader().setSectionResizeMode(QHeaderView.ResizeMode.Stretch) self.table.setAlternatingRowColors(True) self.table.setEditTriggers(QAbstractItemView.EditTrigger.NoEditTriggers) # 無法編輯 def init_getdata(self): row_count = self.table.rowCount() self.table.setRowCount(row_count + 1) self.table.setItem(0, 0, QTableWidgetItem('百度')) self.table.setItem(0, 1, QTableWidgetItem('https://www.baidu.com/')) row_count = self.table.rowCount() self.table.setRowCount(row_count + 1) self.table.setItem(1, 0, QTableWidgetItem('騰訊視頻')) self.table.setItem(1, 1, QTableWidgetItem('https://v.qq.com/')) def init_signal(self): self.table.cellDoubleClicked.connect(self.open_url) # 雙擊打開網(wǎng)頁 def init_layout(self): v_layout = QVBoxLayout() v_layout.addWidget(self.table) self.setLayout(v_layout) def open_url(self, row, column): print(f'{row} {column}') if int(column) == 1: url = self.table.item(row, column).text() webbrowser.open(url) if __name__ == '__main__': os.environ["QT_IM_MODULE"] = "ibus" # mac系統(tǒng)解決輸入法不兼容 app = QApplication(sys.argv) qt_material.apply_stylesheet(app, theme='light_pink.xml') window = Window() window.show() sys.exit(app.exec())
3. 總結(jié)
優(yōu)點(diǎn)
簡單易用:提供了直接操作表格數(shù)據(jù)的接口。
靈活性高:支持動態(tài)加載數(shù)據(jù)、編輯單元格內(nèi)容和嵌入控件。
功能豐富:支持表頭設(shè)置、單元格合并、選擇模式等功能。
適用場景
數(shù)據(jù)展示(如成績表、庫存表)。
數(shù)據(jù)編輯(如員工信息管理、訂單管理)。
動態(tài)數(shù)據(jù)加載(如數(shù)據(jù)庫查詢結(jié)果、CSV 文件數(shù)據(jù))。
到此這篇關(guān)于Pyqt的QTableWidget組件的使用的文章就介紹到這了,更多相關(guān)Pyqt QTableWidget組件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python 定時器,實(shí)現(xiàn)每天凌晨3點(diǎn)執(zhí)行的方法
今天小編就為大家分享一篇python 定時器,實(shí)現(xiàn)每天凌晨3點(diǎn)執(zhí)行的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-02-02Python語音合成之第三方庫gTTs/pyttsx3/speech橫評(內(nèi)附使用方法)
Python是一種非常強(qiáng)大的腳本語言,可以用來實(shí)現(xiàn)各種復(fù)雜的應(yīng)用,其中之一就是文本轉(zhuǎn)語音,即把文字轉(zhuǎn)換成聲音來發(fā)出,下面這篇文章主要給大家介紹了關(guān)于Python語音合成之第三方庫gTTs/pyttsx3/speech橫評的相關(guān)資料,文中還介紹了詳細(xì)的使用方法,需要的朋友可以參考下2023-05-05Python輪播圖與導(dǎo)航欄功能的實(shí)現(xiàn)流程全講解
這篇文章主要介紹了Python項(xiàng)目輪播圖功能實(shí)現(xiàn)和導(dǎo)航欄的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2022-09-09Python利用xmltodict實(shí)現(xiàn)字典和xml互相轉(zhuǎn)換的示例代碼
xmltodict是一個Python第三方庫,用于處理XML數(shù)據(jù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-12-12python腳本監(jiān)控Tomcat服務(wù)器的方法
這篇文章主要介紹了利用python腳本監(jiān)控Tomcat服務(wù)器的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2018-07-07Python loguru日志庫之高效輸出控制臺日志和日志記錄
這篇文章主要介紹了python loguru日志庫之高效輸出控制臺日志和日志記錄的相關(guān)知識,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-03-03