06.PyQt5高階介面控------PyQt5程式設計開發
一、表格與樹
表格與樹解決的問題是如何在一個控制元件中有規律地呈現更多的資料。解決該問題的兩種控制元件類為表格結構的控制元件類,樹形結構的控制元件類。
1、QTableView
若一個應用和一批資料(如陣列、列表)進行互動後要以表格的形式輸出這些資訊的話,就用QTableView類。在QtableView中可以使用自定義的資料模型來顯示內容,通過setModel來繫結資料來源,可用的模式如下:
QStringListModel:儲存一組字串
QStandardItemModel:儲存任意層次結構的資料
QDirModel:對檔案系統進行封裝
QSqlQueryModel:對SQL的查詢結構集進行封裝
QSqlTableModel:對SQL中的表格進行封裝
QSqlRelationalTableModel:對帶有foreign key的SQL表格進行封裝
QSortFilterProxyModel:對模型中的資料進行排序或過濾
QTableView的使用例子:
# -*- coding: utf-8 -*- |
''' |
【簡介】 |
PyQT5中QTableView表格檢視控制元件的例子 |
''' |
from PyQt5.QtWidgets import * |
from PyQt5.QtGui import * |
from PyQt5.QtCore import * |
import sys |
class Table(QWidget): |
def __init__(self, arg=None): |
super(Table, self).__init__(arg) |
self.setWindowTitle("QTableView表格檢視控制元件的例子") |
self.resize(500,300); |
self.model=QStandardItemModel(4,4); |
self.model.setHorizontalHeaderLabels(['標題1','標題2','標題3','標題4']) |
for row in range(4): |
for column in range(4): |
item = QStandardItem(" |
self.model.setItem(row, column, item) |
self.tableView=QTableView() |
self.tableView.setModel(self.model) |
#下面程式碼讓表格100填滿視窗 |
#self.tableView.horizontalHeader().setStretchLastSection(True) |
#self.tableView.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) |
dlgLayout=QVBoxLayout(); |
dlgLayout.addWidget(self.tableView) |
self.setLayout(dlgLayout) |
if __name__ == '__main__': |
app = QApplication(sys.argv) |
table = Table() |
table.show() |
sys.exit(app.exec_()) |
執行結果:
2、QListView
常用方法:setModel():用來設定View所關聯的Model,可以使用Python原生的list作為資料來源Model
selectedItem():選中Model中的條目
isSelected():判斷Model中的某條條目是否被選中
常用訊號:clicked:當單擊某項時,訊號被髮射
doubleClicked:當雙擊某項時,訊號被髮射
使用QListView控制元件例子如下:
# -*- coding: utf-8 -*- |
''' |
【簡介】 |
PyQt5中 QListView 例子 |
''' |
from PyQt5.QtWidgets import QApplication, QWidget , QVBoxLayout , QListView, QMessageBox |
from PyQt5.QtCore import QStringListModel |
import sys |
class ListViewDemo(QWidget): |
def __init__(self, parent=None): |
super(ListViewDemo, self).__init__(parent) |
self.setWindowTitle("QListView 例子") |
self.resize(300, 270) |
layout = QVBoxLayout() |
listView = QListView() |
slm = QStringListModel(); |
self.qList = ['Item 1','Item 2','Item 3','Item 4' ] |
slm.setStringList(self.qList) |
listView.setModel(slm ) |
listView.clicked.connect(self.clicked) |
layout.addWidget( listView ) |
self.setLayout(layout) |
def clicked(self, qModelIndex): |
QMessageBox.information(self, "QListView", "你選擇了: "+ self.qList[qModelIndex.row()]) |
if __name__ == "__main__": |
app = QApplication(sys.argv) |
win = ListViewDemo() |
win.show() |
sys.exit(app.exec_()) |
執行結果:
3、QListWidget
它是一個基於條目的介面,用於從列表中新增或刪除條目。列表中的每個條目都是一個QListWidgetItem物件。QListWidget可以設定為多重選擇。
QListWidget類中的常用方法為:
addItem():在列表中新增QListWidgetItem物件或字串
addItems():新增列表中的每個條目
insertItem():在指定的索引處插入條目
clear():刪除列表的內容
setCurrentItem():設定當前所選條目
sortItems():按升序重新排列條目
常用訊號為:currentItemChanged:當列表中的條目發生改變時發射此訊號
itemClicked:當點選列表中的條目時發射此訊號
QListWidget使用例子:
# -*- coding: utf-8 -*- |
''' |
【簡介】 |
PyQt5中 QListWidget 例子 |
''' |
import sys |
from PyQt5.QtCore import * |
from PyQt5.QtGui import * |
from PyQt5.QtWidgets import * |
class ListWidget(QListWidget): |
def clicked(self,item): |
QMessageBox.information(self, "ListWidget", "你選擇了: "+item.text()) |
if __name__ == '__main__': |
app = QApplication(sys.argv) |
listWidget = ListWidget() |
listWidget.resize(300,120) |
listWidget.addItem("Item 1"); |
listWidget.addItem("Item 2"); |
listWidget.addItem("Item 3"); |
listWidget.addItem("Item 4"); |
listWidget.setWindowTitle('QListwidget 例子') |
listWidget.itemClicked.connect(listWidget.clicked) |
listWidget.show() |
sys.exit(app.exec_()) |
執行結果:
4、QTableWidget
它是Qt程式中常用的顯示資料表格的控制元件。
QTableWidget基本用法例子:
# -*- coding: utf-8 -*- |
''' |
【簡介】 |
PyQT5中單元格的基本例子 |
''' |
import sys |
from PyQt5.QtWidgets import (QWidget, QTableWidget, QHBoxLayout, QApplication, QTableWidgetItem, QAbstractItemView ) |
class Table(QWidget): |
def __init__(self): |
super().__init__() |
self.initUI() |
def initUI(self): |
self.setWindowTitle("QTableWidget 例子") |
self.resize(430,230); |
conLayout = QHBoxLayout() |
tableWidget = QTableWidget() |
tableWidget.setRowCount(4) |
tableWidget.setColumnCount(3) |
conLayout.addWidget(tableWidget ) |
tableWidget.setHorizontalHeaderLabels(['姓名','性別','體重(kg)']) |
newItem = QTableWidgetItem("張三") |
tableWidget.setItem(0, 0, newItem) |
newItem = QTableWidgetItem("男") |
tableWidget.setItem(0, 1, newItem) |
newItem = QTableWidgetItem("160") |
tableWidget.setItem(0, 2, newItem) |
# 將表格變為禁止編輯 |
#tableWidget.setEditTriggers(QAbstractItemView.NoEditTriggers) |
# 設定表格為整行選擇 |
#tableWidget.setSelectionBehavior( QAbstractItemView.SelectRows) |
# 將行和列的大小設為與內容相匹配 |
#tableWidget.resizeColumnsToContents() |
#tableWidget.resizeRowsToContents() |
#表格表頭的顯示與隱藏 |
#tableWidget.verticalHeader().setVisible(False) |
#tableWidget.horizontalHeader().setVisible(False) |
# 不顯示錶格單元格的分割線 |
#tableWidget.setShowGrid(False) |
# 不顯示垂直表頭 |
tableWidget.verticalHeader().setVisible(False) |
self.setLayout(conLayout) |
if __name__ == '__main__': |
app = QApplication(sys.argv) |
example = Table() |
example.show() |
sys.exit(app.exec_()) |
執行結果:
5、QTreeView
它實現了樹形結構,其中QTreeWidget常用方法為:
setColumnWidth(int column,int width):將指定列的寬度設定為給定的值
insertTopLevelItems():在檢視的頂層索引中插入專案列表
expandAll():展開所有的樹形節點
invisibleRootItem():返回樹形控制元件中不可見的根選項(Root Item)
selectedItems():返回所有選定的非隱藏專案的列表
QTreeWidgetItem類中的常用方法為:
addChild():將子項追加到子列表中
setText():設定顯示的節點文字
Text():返回顯示的節點文字
setCheckState(column,state):設定指定列的選中狀態
setIcon(column,icon):在指定的列中顯示圖示
樹形結構實現的例子:
''' |
【簡介】 |
PyQT5中 QTreeWidget 例子 |
''' |
import sys |
from PyQt5.QtWidgets import * |
from PyQt5.QtGui import QIcon , QBrush , QColor |
from PyQt5.QtCore import Qt |
class TreeWidgetDemo(QMainWindow): |
def __init__(self,parent=None): |
super(TreeWidgetDemo,self).__init__(parent) |
self.setWindowTitle('TreeWidget 例子') |
self.tree
相關推薦06.PyQt5高階介面控------PyQt5程式設計開發一、表格與樹 表格與樹解決的問題是如何在一個控制元件中有規律地呈現更多的資料。解決該問題的兩種控制元件類為表格結構的控制元件類,樹形結構的控制元件類。1、QTableView 若一個應用和一批資料(如陣列、列表)進行互動後要以表格的形式輸出這些資訊的話,就用QTa PyQt5高階介面控制元件之QLIstView(二)QListView 前言 QlistView類用於展示資料,它的子類是QListWIdget。QListView是基於模型(Model)的,需要程式來建立模型,然後再儲存資料 QLi PyQt5高階介面控制元件之QThread(十二)QThread 前言 QThread是Qt的執行緒類中最核心的底層類。由於PyQt的的跨平臺特性,QThread要隱藏所有與平臺相關的程式碼 要使用的QThread開始一個執行緒,可以建立它的一個子類,然後覆蓋其它QThread.run()函式 PyQt5高階介面控制元件之QDockWidget(八)QDockWidget 前言 QDockWidget是一個可以停靠在QMainWindow內的視窗控制元件,它可以保持在浮動狀態或者在指定位置作為子視窗附加到主視窗中,QMainWindo PyQt5高階介面控制元件之QStackedWidget(七)QStackedWidget 前言 QTackedWidget是一個堆疊視窗控制元件,可以填充一些小控制元件,但是同一時間只有一個小控制元件可以顯示,QStackedWidget使用QStackedLayout佈局。QSTackedWidget控制元件與 python3.6+pyqt5+pycharm5介面程式設計例項本篇給出在pycharm中構建前端視覺化介面的程式碼。 操作步驟 1 開啟pycharm,點選tools-external tools-QTDesigner,進入GUI介面: 2 採用拖拉的方式建立lable、EditText、PushButton PYQT5登入介面跳轉主介面方法該問題,有很多種方法,但是很多方法要麼這個有問題,要麼那個有問題,最後終於找到一種沒問題的方法。記錄一下: 參考地址:https://www.jianshu.com/p/d18ff36a78d6?from=singlemessage Login.py(登入視窗)檔案 import day10 python介面開發、mock介面、網路程式設計1.falsk介面開發、連線資料庫 import flaskimport datetimeimport jsonimport toolsserver=flask.Flask(__name__)#獲取當前時間介面@server.route('/time')def get_time(): now=str( 量化之路——pyqt5實現介面+pyinstall封裝環境搭建: pip install PyQt5 使用Qtdesigner pip install PyQt5-tools pyinstall打包 pip install pyinstaller 假如pip報錯,應先升級pip,因為pyinstall暫時僅支援到python3.6,所以需要單獨 PyQt5-高階控制元件使用(QTableView)QTableView類用於以表格形式輸出資訊,可通過自定義的資料模型來顯示資料,通過setModel來繫結資料來源; 繼承結構如下: QTableView有以下幾種模式: 例如: 1 #QTableView元件的使用 2 from PyQt5.QtWidgets im Java高階程式設計開發之反射機制的應用瞭解反射機制之前,我們要明確一點,java語言是面向物件程式設計的開發語言。所以,在java的世界中,萬物皆物件。 那麼這樣的話,我們在程式設計開發過程中,所建立的類是不是物件呢?是誰的物件呢?是哪個類的物件呢? 答案是肯定的。類也是物件,它是java.lang.Clas python之把animation的動態圖嵌入pyqt5的介面中# -*- coding: utf-8 -*- ''' python技巧之把animation的動態圖嵌入pyqt5的介面中 ''' import sys import numpy as np from PyQt5 import QtWidgets, QtCore fro pyqt5 登入介面的實現模板(加強版)說明 本例,在登入介面第一版的基礎上,增加了主介面的登出功能和退出功能。 登出功能 # 動作一:登出 def on_printAction1_triggered(self): self.close() dialog 【Python專題】 使用pycharm+pyqt5 調取介面程式一、使用QtDesigner製作介面 1)開啟的介面設計工具QtDesigner,如圖: 2)新建窗體,選擇Main Window: 3)分別在視窗新增如下控制元件,Calendar、3個 使用pycharm+pyqt5 調取介面程式1)開啟的介面設計工具QtDesigner,如圖: 2)新建窗體,選擇Main Window: 3)分別在視窗新增如下控制元件,Calendar、3個pushButton、checkBox、text Browser、text Edit如圖所示: 4)拖好控制元件之後儲存到pycharm專 PyQt5設計介面方法from PyQt5 import QtCore, QtGui, QtWidgetsfrom PyQt5.QtWidgets import QApplication, QMainWindowimport randomimport timeclass Ui_Form(objec PyQt5圖形介面播放音樂安裝Pygamepip install pygameimport time import pygame pygame.init() print("播放音樂1") track = pygame.mixer.music.load(r"此處為音訊檔案的路徑") pygame.mi Python 使用QT5開發介面的一個demo開發過程的總結1. 當前使用的 python版本 : 2. 使用pip安裝 QT5: pip install pyqt5 3. 安裝 PyQt5-tools : pip install pyqt5-tools 4. 校驗Q 零基礎學Java程式設計開發要會這些知識才能去應聘工作!Java行業在網際網路發展迅速的今天是一日比一日發展的好,Java語言已經成為世界上應用較廣泛的程式語言,學Java已經成為程式語言中的潮流,越來越多的人有意向到Java行業中發展。那零基礎如何學習Java開發?要會什麼? Java其實就是計算機程式語言,初級程式設計師具備一點點的資料結構知識以 TIOBE2017年4程式設計開發語言排名和20年經驗體會可以訪問連結檢視詳細排名 https://www.tiobe.com/tiobe-index/ 每月一次的語言熱門排行榜又釋出了,當然國外的語言熱門程度和國內還是有一定的區別,不過也可以作為參考,大家一起說下自己工作的語言,給想要學習的同學做一些借鑑,我先說下我瞭解和熟悉 |