Pyqt的QTableWidget組件的使用
QTableWidget 是 PyQt6 中的一個(gè)表格控件,用于顯示和編輯二維表格數(shù)據(jù)。它繼承自 QTableView,提供了更簡(jiǎn)單的方式來處理表格數(shù)據(jù),適合用于需要展示結(jié)構(gòu)化數(shù)據(jù)的場(chǎng)景。
1. 常用方法
1.1 構(gòu)造函數(shù)
QTableWidget(parent: QWidget = None):創(chuàng)建一個(gè)空的表格控件。QTableWidget(rows: int, columns: int, parent: QWidget = None):創(chuàng)建一個(gè)指定行數(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:獲取水平表頭對(duì)象。verticalHeader() -> QHeaderView:獲取垂直表頭對(duì)象。
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):在指定單元格中放置一個(gè)控件(如按鈕、下拉框等)。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 信號(hào)
cellChanged(row: int, column: int):當(dāng)單元格內(nèi)容發(fā)生變化時(shí)觸發(fā)。cellClicked(row: int, column: int):當(dāng)單元格被點(diǎn)擊時(shí)觸發(fā)。cellDoubleClicked(row: int, column: int):當(dāng)單元格被雙擊時(shí)觸發(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)
簡(jiǎn)單易用:提供了直接操作表格數(shù)據(jù)的接口。
靈活性高:支持動(dòng)態(tài)加載數(shù)據(jù)、編輯單元格內(nèi)容和嵌入控件。
功能豐富:支持表頭設(shè)置、單元格合并、選擇模式等功能。
適用場(chǎng)景
數(shù)據(jù)展示(如成績(jī)表、庫存表)。
數(shù)據(jù)編輯(如員工信息管理、訂單管理)。
動(dòng)態(tài)數(shù)據(jù)加載(如數(shù)據(jù)庫查詢結(jié)果、CSV 文件數(shù)據(jù))。
到此這篇關(guān)于Pyqt的QTableWidget組件的使用的文章就介紹到這了,更多相關(guān)Pyqt QTableWidget組件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python?實(shí)現(xiàn)?mp3Play?音頻播放
這篇文章主要介紹了python?實(shí)現(xiàn)?mp3Play?音頻播放,文章基于python的相關(guān)資料展開詳細(xì)內(nèi)容,具有一定的參考價(jià)值需要的小伙伴可以參考一下2022-04-04
python中os.path.join()函數(shù)實(shí)例用法
在本篇文章里小編給大家整理的是一篇關(guān)于python中os.path.join()函數(shù)實(shí)例用法,有興趣的朋友們可以跟著學(xué)習(xí)參考下。2021-05-05
從0開始的Python學(xué)習(xí)014面向?qū)ο缶幊蹋ㄍ扑])
這篇文章主要介紹了Python面向?qū)ο缶幊?,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
python中np.zeros_like函數(shù)用法詳解
這篇文章主要介紹了python中np.zeros_like函數(shù)用法的相關(guān)資料,np.zeros_like是?NumPy?庫中的一個(gè)函數(shù),用于創(chuàng)建一個(gè)與給定數(shù)組形狀和類型相同的新數(shù)組,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-04-04
python如何實(shí)現(xiàn)不用裝飾器實(shí)現(xiàn)登陸器小程序
這篇文章主要介紹了python如何實(shí)現(xiàn)不用裝飾器實(shí)現(xiàn)登陸器小程序,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12
Python中列表list以及l(fā)ist與數(shù)組array的相互轉(zhuǎn)換實(shí)現(xiàn)方法
這篇文章主要介紹了Python中l(wèi)ist以及l(fā)ist與array的相互轉(zhuǎn)換實(shí)現(xiàn)方法,簡(jiǎn)單分析了Python中l(wèi)ist的功能、使用方法及l(fā)ist與array相互轉(zhuǎn)換實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-09-09

