自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Qt 庫(kù)中PyQt學(xué)習(xí)筆記之QTableWidget

移動(dòng)開(kāi)發(fā)
PyQt實(shí)現(xiàn)了一個(gè)Python模塊集。它有超過(guò)300類,將近6000個(gè)函數(shù)和方法。它是一個(gè)多平臺(tái)的工具包,可以運(yùn)行在所有主要操作系統(tǒng)上,包括UNIX,Windows和Mac。

Qt庫(kù)是這個(gè)星球上***大的庫(kù)之一,在更強(qiáng)大庫(kù)出現(xiàn)之前。PyQt是由Phil Thompson 開(kāi)發(fā)。PyQt是一個(gè)創(chuàng)建GUI應(yīng)用程序的工具包。它是Python編程語(yǔ)言和Qt庫(kù)的成功融合。

先看一下類的繼承圖:

PyQt學(xué)習(xí)筆記之QTableWidget

如上所示,QtableWidget是繼承于QtableView的。所以QtableView的方法也在QtableWidget中繼承了。

QTableWidget類提供了一個(gè)默認(rèn)模式的表格,它是基于Item的,這個(gè)Item是由QTableWidgetItem提供的。如果你要構(gòu)建自己的數(shù)據(jù)模式,請(qǐng)使用QTableView而不是QTableWidget。

一、如何構(gòu)建一個(gè)QtableWidget

  1. # !/usr/bin/python  
  2. import sys  
  3. from PyQt4.QtGui import *  
  4. class TableWidget(QMainWindow):  
  5.     def __init__(self,parent=None):  
  6.         QWidget.__init__(self,parent)  
  7.         self.setWindowTitle('TableWidget')  
  8.         self.table = QTableWidget(10,6)  
  9.         self.setCentralWidget(self.table)  
  10. app = QApplication(sys.argv)  
  11. tb = TableWidget()  
  12. tb.show()  
  13. app.exec_() 

結(jié)果如下圖所示:創(chuàng)建了一個(gè)10行6列的表格,可編輯可輸入。

初始化的時(shí)候也可以不設(shè)置行數(shù)和列數(shù)。而等到創(chuàng)建完了以后再設(shè)。

比如:

  1. self.table = QTableWidget()  
  2. self.table.setRowCount(10)  
  3. self.table.setColumnCount(6) 

這樣結(jié)果是跟上面一樣的。

PyQt學(xué)習(xí)筆記之QTableWidget 

#p#

二、添加表頭。

可以添加水平和垂直表頭,QtableWidget提供了兩個(gè)方法來(lái)添加表頭,非常方便。

  1. self.table = QTableWidget(5,7)  
  2.   self.table.setHorizontalHeaderLabels(['SUN','MON','TUE','WED',  
  3.                                               'THU','FIR','SAT']) 

上面兩句就是添加水平表頭。假如我們不添加表頭,那么表頭默認(rèn)的數(shù)字就是代表所在

行或者所在列。

三、添加表項(xiàng)。

  1. self.newItem = QTableWidgetItem('Item')  
  2. self.table.setItem(1,2,self.newItem) 

如下圖:可以看出,行列數(shù)是指不算標(biāo)題行,都是從第0行,或者第0列開(kāi)始計(jì)數(shù)的。

PyQt學(xué)習(xí)筆記之QTableWidget

下面我們通過(guò)循環(huán)來(lái)添加表項(xiàng)的所有內(nèi)容:

  1. self.table = QTableWidget(5,7)        
  2. self.table.setHorizontalHeaderLabels(['SUN','MON','TUE','WED',  
  3.                                               'THU','FIR','SAT'])  
  4.         for i in range(self.table.rowCount()):  
  5.             for j in range(self.table.columnCount()):  
  6.                 cnt = '(%d,%d)'% (i,j)  
  7.                 newItem = QTableWidgetItem(cnt)  
  8.                 self.table.setItem(i,j,newItem) 

QTableWidget.rowCount()是得到行數(shù),int型。

QTableWidget.columnCount()是得到列數(shù),int型

結(jié)果如下:

PyQt學(xué)習(xí)筆記之QTableWidget 

#p#

四、修改表項(xiàng)內(nèi)容

QTableWidget.clear(self) 清楚所有表項(xiàng)及表頭

QTableWidget.clearContents(self) 只清楚表項(xiàng),不清楚表頭。

QTableWidget.insertColumn(self, int column) 在某一列插入新的一列。

QTableWidget.insertRow(self, int row)在某一行插入新的一行。

QTableWidget.removeColumn(self, int column) 移除column列及其內(nèi)容。

QTableWidget.removeRow(self, int row)移除第row行及其內(nèi)容。

五、關(guān)于顯示的一些問(wèn)題,外觀

QTableView.setShowGrid (self, bool show) 從TableView繼承而來(lái)的,

是否顯示表格的橫豎線,默認(rèn)情況下是顯示的,如上面的例子,如果設(shè)為setShowGrid(False) ,則不顯示分割線,橫豎都沒(méi)有。

另外,還可以通過(guò)hideRow(),hideColumn(),showRow(),showColumn()等來(lái)隱藏或顯示特定行和列。

還有一個(gè)是否顯示表頭的問(wèn)題,比如很多情況下我們只需要水平表頭,不需要垂直表頭,怎么辦呢?我們?cè)谏厦娴睦又屑由线@么一句:

  1. self.table.verticalHeader().setVisible(False) 

setVisible是所有Qwidget都有的方法,而self.table.verticalHeader()是得到了一個(gè)表頭,表頭也是QheaderView繼承來(lái)的,也是Qwidget的子類,所以也可以調(diào)用setVisible()方法來(lái)顯示或者隱藏表頭。

結(jié)果如下圖:

PyQt學(xué)習(xí)筆記之QTableWidget

因?yàn)槔^承關(guān)系,父類的很多方法都可以調(diào)用,所以QTableWidget的方法非常之多,應(yīng)該有幾百個(gè),一一學(xué)習(xí)是不可能的,只能用到的時(shí)候去查。下面介紹幾個(gè)繼承于上面父類的方法。

QabstractItemView 是QTableWidget的父類的父類,他有下面幾個(gè)方法,我們QTableWidget中經(jīng)常調(diào)用,就是是否項(xiàng)目可編輯,點(diǎn)擊選擇是選擇行,還是可以選擇列,是可以選擇多行(多列),還是只可以選擇單行(單列),等等非常好用,如下的列子:

  1. self.table.setEditTriggers(QTableWidget.NoEditTriggers)  
  2.     self.table.setSelectionBehavior(QTableWidget.SelectRows)  
  3.     self.table.setSelectionMode(QTableWidget.SingleSelection)  
  4. self.table.setAlternatingRowColors(True) 

***句,設(shè)為不可編輯狀態(tài),第二是選擇行,第三是選擇單個(gè)行,第四是隔行改變顏色。

結(jié)果如下:

PyQt學(xué)習(xí)筆記之QTableWidget

不能編輯,不能選擇一列或者單個(gè)項(xiàng)目,只能選擇單一行。

另外可以修改行寬高等大小信息,還有各行,列,等的顏色問(wèn)題,帶圖標(biāo)的標(biāo)題等等美化措施,請(qǐng)參看documentation。

小結(jié):本篇文章參考了Qt documentation online,因?yàn)檫@個(gè)幫助文檔是基于C++做的,里面的語(yǔ)句是C++寫的,不過(guò)因?yàn)?strong>PyQt做了很好的移植,方法的名稱,參數(shù)等等基本都可以在python中套用.

【編輯推薦】

初識(shí)Python與Qt

新手須知 QT類大全

Qt 中Socket編程實(shí)例

在 Qt學(xué)習(xí) QTableItem 類

QT中建立Python GUI應(yīng)用程序

責(zé)任編輯:zhaolei 來(lái)源: 互聯(lián)網(wǎng)
相關(guān)推薦

2011-06-30 16:38:07

Qt QTableWidg

2011-08-30 13:33:29

Qt數(shù)據(jù)庫(kù)

2011-07-04 13:26:30

Qt Designer

2011-07-04 13:08:26

Qt Designer

2011-07-04 13:17:18

Qt Designer 布局

2011-06-15 12:58:05

Qt QTableWidg

2011-09-07 16:36:00

Qt Widget

2011-07-01 10:03:52

QT 數(shù)據(jù)庫(kù)

2011-08-30 12:59:52

Qt數(shù)據(jù)庫(kù)

2011-09-09 17:24:39

Qt Webkit模塊

2011-06-22 11:09:01

QT 菜單 多線程

2011-08-29 10:01:27

QTWebkit插件

2011-03-08 16:30:40

Proftpd

2011-03-08 16:30:24

Proftpd

2020-11-09 14:07:53

PyQtQt編程

2021-02-05 11:55:37

PythonWindows平臺(tái)代碼

2011-08-29 18:17:12

Oracle聯(lián)合查詢

2011-06-27 09:02:18

Qt UDP 網(wǎng)絡(luò)

2011-08-25 11:08:21

Sybase數(shù)據(jù)庫(kù)

2011-08-16 13:33:13

MySQL數(shù)據(jù)庫(kù)初學(xué)者
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)