成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Qt 庫中PyQt學習筆記之QTableWidget

移動開發
PyQt實現了一個Python模塊集。它有超過300類,將近6000個函數和方法。它是一個多平臺的工具包,可以運行在所有主要操作系統上,包括UNIX,Windows和Mac。

Qt庫是這個星球上***大的之一,在更強大出現之前。PyQt是由Phil Thompson 開發。PyQt是一個創建GUI應用程序的工具包。它是Python編程語言和Qt庫的成功融合。

先看一下類的繼承圖:

PyQt學習筆記之QTableWidget

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

QTableWidget類提供了一個默認模式的表格,它是基于Item的,這個Item是由QTableWidgetItem提供的。如果你要構建自己的數據模式,請使用QTableView而不是QTableWidget。

一、如何構建一個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_() 

結果如下圖所示:創建了一個10行6列的表格,可編輯可輸入。

初始化的時候也可以不設置行數和列數。而等到創建完了以后再設。

比如:

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

這樣結果是跟上面一樣的。

PyQt學習筆記之QTableWidget 

#p#

二、添加表頭。

可以添加水平和垂直表頭,QtableWidget提供了兩個方法來添加表頭,非常方便。

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

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

行或者所在列。

三、添加表項。

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

如下圖:可以看出,行列數是指不算標題行,都是從第0行,或者第0列開始計數的。

PyQt學習筆記之QTableWidget

下面我們通過循環來添加表項的所有內容:

  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()是得到行數,int型。

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

結果如下:

PyQt學習筆記之QTableWidget 

#p#

四、修改表項內容

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

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

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

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

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

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

五、關于顯示的一些問題,外觀

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

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

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

還有一個是否顯示表頭的問題,比如很多情況下我們只需要水平表頭,不需要垂直表頭,怎么辦呢?我們在上面的例子中加上這么一句:

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

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

結果如下圖:

PyQt學習筆記之QTableWidget

因為繼承關系,父類的很多方法都可以調用,所以QTableWidget的方法非常之多,應該有幾百個,一一學習是不可能的,只能用到的時候去查。下面介紹幾個繼承于上面父類的方法。

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

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

***句,設為不可編輯狀態,第二是選擇行,第三是選擇單個行,第四是隔行改變顏色。

結果如下:

PyQt學習筆記之QTableWidget

不能編輯,不能選擇一列或者單個項目,只能選擇單一行。

另外可以修改行寬高等大小信息,還有各行,列,等的顏色問題,帶圖標的標題等等美化措施,請參看documentation。

小結:本篇文章參考了Qt documentation online,因為這個幫助文檔是基于C++做的,里面的語句是C++寫的,不過因為PyQt做了很好的移植,方法的名稱,參數等等基本都可以在python中套用.

【編輯推薦】

初識Python與Qt

新手須知 QT類大全

Qt 中Socket編程實例

在 Qt學習 QTableItem 類

QT中建立Python GUI應用程序

責任編輯:zhaolei 來源: 互聯網
相關推薦

2011-06-30 16:38:07

Qt QTableWidg

2011-08-30 13:33:29

Qt數據庫

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 數據庫

2011-08-30 12:59:52

Qt數據庫

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:24

Proftpd

2011-03-08 16:30:40

Proftpd

2020-11-09 14:07:53

PyQtQt編程

2021-02-05 11:55:37

PythonWindows平臺代碼

2011-08-29 18:17:12

Oracle聯合查詢

2011-06-27 09:02:18

Qt UDP 網絡

2011-08-25 11:08:21

Sybase數據庫

2011-06-27 09:47:43

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久伊人精品一区二区三区 | 99热这里只有精品8 激情毛片 | 成人欧美一区二区三区 | 在线观看av网站 | 天天色天天色 | 国产黄色av网站 | 在线视频中文字幕 | 久久青青 | 国产精品国产精品国产专区不片 | 欧美精品一区二区三区四区 在线 | 91免费在线 | 欧美日本在线观看 | 亚洲一级毛片 | 台湾av在线 | 日韩欧美视频免费在线观看 | 麻豆精品国产91久久久久久 | a久久| 国产免费一级一级 | 国产精品免费在线 | 成人免费视频网站在线观看 | 日韩不卡一区二区三区 | 国产清纯白嫩初高生视频在线观看 | 午夜一区二区三区在线观看 | 亚洲激情综合 | 午夜一级做a爰片久久毛片 精品综合 | 欧美一级久久久猛烈a大片 日韩av免费在线观看 | 免费在线一区二区 | 欧洲亚洲精品久久久久 | 日日干日日操 | 久草a√| 欧美精品一区二区在线观看 | 国产精品美女久久久久aⅴ国产馆 | 日韩精品一区二 | 免费观看黄色片视频 | 天天久久| 中文一级片 | 久久亚洲春色中文字幕久久久 | 欧美激情精品久久久久久变态 | 日日骚网| 国产欧美一区二区三区国产幕精品 | www.久久精品视频 |