91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 開發技術 > 
  • python GUI庫圖形界面開發之PyQt5表格控件QTableView詳細使用方法與實例

python GUI庫圖形界面開發之PyQt5表格控件QTableView詳細使用方法與實例

發布時間:2020-08-31 23:11:55 來源:腳本之家 閱讀:430 作者:jia666666 欄目:開發技術

PyQt5表格控件QTableView簡介

在通常情況下,一個應用需要和一批數據進行交互,然后以表格的形式輸出這些信息,這時就需要用到QTableView類了,在QTableView中可以使用自定義的數據模型來顯示內容,通過setModel來綁定數據源

QTableWidget繼承自QTableView,主要區別是QTableView可以使用自定義的數據模型來顯示內容(先通setModel來綁定數據源),而QTableWidget自能使用標準的數據模型,并且其單元格數據是通過QTableWidgetItem對象實現的,通常QTableWidget就能夠滿足我們的要求

QTableView可用的模式

QTableView控件可以綁定一個模型數據用來更新控件上的內容

名稱 含義
QStringListModel 儲存一組字符串
QstandardItemModel 存儲任意層次結構的數據
QDirModel 對文件系統進行封裝
QSqlQueryModel 對SQL的查詢結果集進行封裝
QSqlTableModel 對SQL中的表格進行封裝
QSqlRelationalTableModel 對帶有foreign key的SQL表格進行封裝
QSortFilterProxyModel 對模型中的數據進行排序或過濾

QTableView的使用實例

import sys
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *

class Table(QWidget):
  def __init__(self,parent=None):
    super(Table, self).__init__(parent)
    #設置標題與初始大小
    self.setWindowTitle('QTableView表格視圖的例子')
    self.resize(500,300)

    #設置數據層次結構,4行4列
    self.model=QStandardItemModel(4,4)
    #設置水平方向四個頭標簽文本內容
    self.model.setHorizontalHeaderLabels(['標題1','標題2','標題3','標題4'])


    # #Todo 優化2 添加數據
    # self.model.appendRow([
    #   QStandardItem('row %s,column %s' % (11,11)),
    #   QStandardItem('row %s,column %s' % (11,11)),
    #   QStandardItem('row %s,column %s' % (11,11)),
    #   QStandardItem('row %s,column %s' % (11,11)),
    # ])

    for row in range(4):
      for column in range(4):
        item=QStandardItem('row %s,column %s'%(row,column))
        #設置每個位置的文本值
        self.model.setItem(row,column,item)

    #實例化表格視圖,設置模型為自定義的模型
    self.tableView=QTableView()
    self.tableView.setModel(self.model)



    # #todo 優化1 表格填滿窗口
    # #水平方向標簽拓展剩下的窗口部分,填滿表格
    # self.tableView.horizontalHeader().setStretchLastSection(True)
    # #水平方向,表格大小拓展到適當的尺寸
    # self.tableView.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
    #
    # #TODO 優化3 刪除當前選中的數據
    # indexs=self.tableView.selectionModel().selection().indexes()
    # print(indexs)
    # if len(indexs)>0:
    #   index=indexs[0]
    #   self.model.removeRows(index.row(),1)


    #設置布局
    layout=QVBoxLayout()
    layout.addWidget(self.tableView)
    self.setLayout(layout)
if __name__ == '__main__':
  app=QApplication(sys.argv)
  table=Table()
  table.show()
  sys.exit(app.exec_())

運行程序,顯示效果如圖

python GUI庫圖形界面開發之PyQt5表格控件QTableView詳細使用方法與實例

從圖中可以看出,表格并沒有填滿窗口,每列都可以自由拉伸,但是可能會出現滾動條

優化1:需要表格填充滿窗口,可以添加一下代碼

#水平方向標簽拓展剩下的窗口部分,填滿表格
self.tableView.horizontalHeader().setStretchLastSection(True)
#水平方向,表格大小拓展到適當的尺寸   
self.tableView.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)

效果如下

python GUI庫圖形界面開發之PyQt5表格控件QTableView詳細使用方法與實例

優化2:添加數據

#Todo 優化2 添加數據
    self.model.appendRow([
      QStandardItem('row %s,column %s' % (11,11)),
      QStandardItem('row %s,column %s' % (11,11)),
      QStandardItem('row %s,column %s' % (11,11)),
      QStandardItem('row %s,column %s' % (11,11)),
    ])

效果如圖

python GUI庫圖形界面開發之PyQt5表格控件QTableView詳細使用方法與實例

優化3:刪除當前選中的數據

  indexs=self.tableView.selectionModel().selection().indexes()
    print(indexs)
    if len(indexs)>0:
      index=indexs[0]
      self.model.removeRows(index.row(),1)

python GUI庫圖形界面開發之PyQt5表格控件QTableView詳細使用方法與實例

本文主要介紹了PyQt5表格控件QTableView詳細使用方法與實例,更多關于這方面的知識請查看下面的相關鏈接

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

吴江市| 望都县| 新沂市| 宿松县| 公安县| 桃园市| 屏东县| 陵川县| 永登县| 固安县| 区。| 景宁| 琼海市| 防城港市| 内乡县| 开化县| 德惠市| 仲巴县| 新余市| 富蕴县| 西华县| 兴隆县| 上杭县| 石阡县| 前郭尔| 大庆市| 永城市| 社旗县| 许昌市| 玛曲县| 尖扎县| 页游| 库车县| 中山市| 会理县| 江安县| 象州县| 蓝山县| 焦作市| 原阳县| 临海市|