欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

PyQt5快速入門(四)PyQt5高級窗口組件

PyQt5快速入門(四)PyQt5高級窗口組件

一、QTableView

1、QTableView簡介

QTableView可以使用自定義的數(shù)據(jù)模型來顯示內(nèi)容,通過setModel綁定數(shù)據(jù)源,由QAbstractItemView類定義的接口來實現(xiàn),使其能夠顯示由QAbstractItemModel類派生的模型提供的數(shù)據(jù)。

企業(yè)建站必須是能夠以充分展現(xiàn)企業(yè)形象為主要目的,是企業(yè)文化與產(chǎn)品對外擴展宣傳的重要窗口,一個合格的網(wǎng)站不僅僅能為公司帶來巨大的互聯(lián)網(wǎng)上的收集和信息發(fā)布平臺,創(chuàng)新互聯(lián)公司面向各種領(lǐng)域:混凝土泵車成都網(wǎng)站設(shè)計成都全網(wǎng)營銷解決方案、網(wǎng)站設(shè)計等建站排名服務(wù)。


2、標準模型

QStringListModel 字符串鏈表數(shù)據(jù)模型
QStandardItemModel標準數(shù)據(jù)項模型,存儲任意結(jié)構(gòu)層次的數(shù)據(jù)
QDirModel 文件系統(tǒng)目錄模型
QSqlQueryModel SQL查詢結(jié)果集數(shù)據(jù)模型
QSqlTableModel SQL表格數(shù)據(jù)模型
QSqlRelationTableModel 關(guān)系型SQL表格數(shù)據(jù)模型
QSortFilterProxyModel 排序過濾代理模型

3、QTableView實例

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QTableView, QHBoxLayout
from PyQt5.QtGui import QStandardItemModel,QStandardItem

class MainWidget(QWidget):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.model = QStandardItemModel(4, 4)
        headers = ["column1", "column2", "column3", "column4"]
        self.model.setHorizontalHeaderLabels(headers)
        self.tableView = QTableView(self)
        # 最后一列拉伸
        self.tableView.horizontalHeader().setStretchLastSection(True)
        self.tableView.setModel(self.model)

        self.layout = QHBoxLayout()
        self.layout.addWidget(self.tableView)
        self.setLayout(self.layout)

    def initUI(self):
        # 數(shù)據(jù)項增加
        for row in range(10):
            for column in range(4):
                item = QStandardItem()
                item.setText(str(column))
                self.model.setItem(row, column, item)
        # 增加一行
        for row in range(5):
            items = []
            for column in range(4):
                items.append(QStandardItem(str(column)))
            self.model.appendRow(items)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MainWidget()
    window.initUI()
    window.resize(400, 200)
    window.show()

    sys.exit(app.exec_())

二、QTreeView

1、QTreeView簡介

QTreeView是一種樹形結(jié)構(gòu)的視圖,繼承自QAbstractItemView,是Model/View框架的一部分。

2、QTreeView實例

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QTreeView, QHBoxLayout
from PyQt5.QtGui import QStandardItemModel,QStandardItem

class MainWidget(QWidget):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.model = QStandardItemModel()
        self.treeView = QTreeView(self)
        self.treeView.setModel(self.model)

        self.layout = QHBoxLayout()
        self.layout.addWidget(self.treeView)
        self.setLayout(self.layout)

    def initUI(self):
        root = self.model.invisibleRootItem()
        for i in range(4):
            item = QStandardItem(str(i))
            for j in range(3):
                chidItem = QStandardItem(str(j))
                item.setChild(j, chidItem)
            root.setChild(i, item)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MainWidget()
    window.initUI()
    window.resize(400, 200)
    window.show()

    sys.exit(app.exec_())

三、QListView

1、QListView簡介

QListView是列表視圖,繼承自QAbstractItemView,不顯示表頭和表框,為Qt的Model/View結(jié)構(gòu)提供了更靈活的方式。

2、QListView實例

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QListView, QHBoxLayout
from PyQt5.QtGui import QStandardItemModel,QStandardItem

class MainWidget(QWidget):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.model = QStandardItemModel()
        self.listView = QListView(self)
        self.listView.setModel(self.model)

        self.layout = QHBoxLayout()
        self.layout.addWidget(self.listView)
        self.setLayout(self.layout)

    def initUI(self):
        root = self.model.invisibleRootItem()
        for i in range(10):
            item = QStandardItem(str(i))
            root.setChild(i, item)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MainWidget()
    window.initUI()
    window.resize(400, 200)
    window.show()

    sys.exit(app.exec_())

四、QTableWidget

1、QTableWidget簡介

?QTableWidget表格單元組件繼承自QTableView,QTableView可以使用自定義的數(shù)據(jù)模型來顯示內(nèi)容,而QTableWidget則只能使用標準的數(shù)據(jù)模型,并且其單元格數(shù)據(jù)是QTableWidgetItem的對象來實現(xiàn)的,QTableWidgetItem用來表示表格中的一個單元格,整個表格都需要用逐個單元格構(gòu)建起來。

2、QTableWidget實例

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QHBoxLayout, QTableWidget, QTableWidgetItem
from PyQt5.QtCore import Qt

class MainWidget(QWidget):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.tableWidget = QTableWidget(self)

        self.layout = QHBoxLayout()
        self.layout.addWidget(self.tableWidget)
        self.setLayout(self.layout)

    def initUI(self):
        self.tableWidget.setRowCount(10)
        self.tableWidget.setColumnCount(5)
        for row in range(10):
            for column in range(5):
                item = QTableWidgetItem()
                # 設(shè)置數(shù)據(jù)項顯示數(shù)據(jù)角色的數(shù)據(jù)
                item.setData(Qt.DisplayRole, column)
                self.tableWidget.setItem(row, column, item)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MainWidget()
    window.initUI()
    window.resize(400, 200)
    window.show()

    sys.exit(app.exec_())

五、QTreeWidget

1、QTreeWidget簡介

QTreeWidget樹形單元組件繼承自QTreeView類,可以用來來創(chuàng)建簡單地樹形結(jié)構(gòu)列表。通過QTreeWidget類和QTreeWidgetItem類實現(xiàn)樹形結(jié)構(gòu),QTreeWidgetItem類實現(xiàn)結(jié)點的添加。

2、QTreeWidget實例

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QHBoxLayout, QTreeWidget, QTreeWidgetItem
from PyQt5.QtCore import Qt

class MainWidget(QWidget):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.treeWidget = QTreeWidget(self)

        self.layout = QHBoxLayout()
        self.layout.addWidget(self.treeWidget)
        self.setLayout(self.layout)

    def initUI(self):
        root = self.treeWidget.invisibleRootItem()
        for row in range(4):
            item = QTreeWidgetItem()
            item.setData(0, Qt.DisplayRole, row)
            root.addChild(item)
            # 設(shè)置數(shù)據(jù)項顯示數(shù)據(jù)角色的數(shù)據(jù)
            root.addChild(item)
            for column in range(3):
                child = QTreeWidgetItem()
                child.setData(0, Qt.DisplayRole, column)
                item.addChild(child)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MainWidget()
    window.initUI()
    window.resize(400, 200)
    window.show()

    sys.exit(app.exec_())

六、QListWidget

1、QListWidget簡介

QListWidget列表單元組件繼承自QListView,可以顯示一個列表,列表中的每個項是QListWidgetItem的一個實例,每個項可以通過QListWidgetItem來操作。可以通過QListWidgetItem來設(shè)置每個項的圖像與文字。

2、QListWidget實例

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QHBoxLayout, QListWidget, QListWidgetItem
from PyQt5.QtCore import Qt

class MainWidget(QWidget):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.listWidget = QListWidget(self)

        self.layout = QHBoxLayout()
        self.layout.addWidget(self.listWidget)
        self.setLayout(self.layout)

    def initUI(self):
        for i in range(10):
            item = QListWidgetItem()
            # 設(shè)置數(shù)據(jù)項顯示數(shù)據(jù)角色的數(shù)據(jù)
            item.setData(Qt.DisplayRole, i)
            self.listWidget.addItem(item)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MainWidget()
    window.initUI()
    window.resize(400, 200)
    window.show()

    sys.exit(app.exec_())

七、QStackedWidget

1、QStackedWidget簡介

QStackedWidget是棧式容器組件,開發(fā)人員可以使用棧管理控件,QStackedWidget只顯示棧頂?shù)目丶褂胷aiseWidget函數(shù)把棧中任何其他控件移到棧頂,從而實現(xiàn)控件之間的切換。

2、QStackedWidget實例

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QStackedWidget, QPushButton

class MainWidget(QWidget):
    currentIndex = 0
    N = 5

    def __init__(self, parent=None):
        super().__init__(parent)
        self.stackWidget = QStackedWidget(self)
        self.layout = QVBoxLayout()

        button = QPushButton("Next")
        button.clicked.connect(self.onNext)
        self.layout.addWidget(self.stackWidget)
        self.layout.addWidget(button)
        self.setLayout(self.layout)

    def initUI(self):
        for i in range(self.N):
            button = QPushButton()
            button.setText("Button {0}".format(i))
            self.stackWidget.addWidget(button)

    def onNext(self):
        self.currentIndex = self.currentIndex + 1
        self.currentIndex = self.currentIndex % self.N
        self.stackWidget.setCurrentIndex(self.currentIndex)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MainWidget()
    window.initUI()
    window.resize(400, 200)
    window.show()

    sys.exit(app.exec_())

八、QDockWidget

1、QDockWidget簡介

QDockWidget是停靠窗體組件,可以作為一個頂層窗口漂浮在桌面,主要作為輔助窗體出現(xiàn)在界面中。QDockWidget包含工具欄和內(nèi)容區(qū)域,工具欄用于顯示窗口標題,一個浮動按鈕和一個關(guān)閉按鈕。QDockWidget可以作為子窗口部件的封裝,通過setWidget()設(shè)置子窗口部件。
PyQt5快速入門(四)PyQt5高級窗口組件

2、QDockWidget實例

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QDockWidget, QTextEdit
from PyQt5.QtCore import Qt

class MainWindow(QMainWindow):

    def __init__(self, parent=None):
        super().__init__(parent)
        # central widget
        self.centralWidget = QTextEdit()
        self.centralWidget.setText("Main Window")
        self.centralWidget.setAlignment(Qt.AlignCenter)
        self.setCentralWidget(self.centralWidget)
        # left dock
        dock = QDockWidget("Window1", self)
        dock.setFeatures(QDockWidget.DockWidgetMovable)
        dock.setAllowedAreas(Qt.LeftDockWidgetArea | Qt.RightDockWidgetArea)
        textEdit = QTextEdit()
        textEdit.setText("Window1,The dock widget can be moved between docks and users")
        dock.setWidget(textEdit)
        self.addDockWidget(Qt.LeftDockWidgetArea, dock)
        # right dock
        dock =QDockWidget("Window2", self)
        dock.setFeatures(QDockWidget.DockWidgetClosable | QDockWidget.DockWidgetFloatable)
        textEdit =QTextEdit()
        textEdit.setText("Window2,The dock widget can be detac from the main window,""and float as an independent window,and can be closed")
        dock.setWidget(textEdit)
        self.addDockWidget(Qt.RightDockWidgetArea, dock)
        # right dock
        dock =QDockWidget("Window3", self)
        dock.setFeatures(QDockWidget.AllDockWidgetFeatures)
        textEdit = QTextEdit()
        textEdit.setText("Window3,The dock widget can be closed,moved,and float")
        dock.setWidget(textEdit)
        self.addDockWidget(Qt.RightDockWidgetArea, dock)

        self.setWindowTitle("DockWidget Demo")
        self.show()

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MainWindow()
    window.resize(400, 200)
    window.show()

    sys.exit(app.exec_())

PyQt5快速入門(四)PyQt5高級窗口組件

九、QMidArea

1、QMidArea簡介

QMdiArea組件是一種多文檔界面,MDI即Multiple Document Interface,主要適用于完成一項工作時需要用到多個文件。QMainWindow是SDI(Signal Document Interface,單文檔界面),每個開啟的文件占據(jù)一個視窗,主要適用于沒有太多文件的應(yīng)用場景。
????QMdiSubWindow類繼承自QWidget,主要用來創(chuàng)建MDI子窗體實例。

2、QMidArea實例

import sys
from PyQt5.QtWidgets import QApplication, QMdiArea, QMdiSubWindow

class MainWindow(QMdiArea):

    def __init__(self, parent=None):
        super().__init__(parent)
        self.addSubWindow(QMdiSubWindow())
        self.addSubWindow(QMdiSubWindow())
        self.show()

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MainWindow()
    window.resize(400, 200)
    window.show()

    sys.exit(app.exec_())

十、QScrollArea

1、QScrollArea簡介

QScrollArea滾動區(qū)組件用來顯示子控件的內(nèi)容的框架,如果子控件的尺寸超過了框架的大小,可以使用滾動條,方便查看整個子控件。QScrollArea可以給任何QWidget添加滾動條,但一般自定義窗體添加滾動條不顯示。

2、QScrollArea實例

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QScrollArea, QPushButton, QTableView

class MainWidget(QWidget):

    def __init__(self, parent=None):
        super().__init__(parent)
        self.layout = QVBoxLayout()
        # 滾動區(qū)創(chuàng)建
        self.scrollArea = QScrollArea()
        # 容器組件
        widget  = QWidget()
        layout = QVBoxLayout()
        tableView = QTableView()
        button = QPushButton("OK")
        layout.addWidget(tableView)
        layout.addWidget(button)
        widget.setLayout(layout)
        # 設(shè)置滾動區(qū)的容器組件
        self.scrollArea.setWidget(widget)
        self.layout.addWidget(self.scrollArea)
        self.setLayout(self.layout)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MainWidget()
    window.resize(400, 200)
    window.show()

    sys.exit(app.exec_())

當前文章:PyQt5快速入門(四)PyQt5高級窗口組件
URL網(wǎng)址:http://chinadenli.net/article30/pgjjpo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動態(tài)網(wǎng)站外貿(mào)網(wǎng)站建設(shè)網(wǎng)站設(shè)計公司云服務(wù)器電子商務(wù)服務(wù)器托管

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

手機網(wǎng)站建設(shè)