pyqt5 python3.7教程_python3+PyQt5自定义视图详解

本文详细介绍了如何使用Python3和PyQt5自定义视图类来实现模型数据的可视化。通过创建自定义视图子类,解决无法用现有视图类呈现的数据展示问题。示例中展示了数据加载、模型定义以及视图绘制等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这篇文章主要为大家详细介绍了python3+PyQt5自定义视图的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

pyqt提供的几个视图类都可以较好工作,包括QLisView,QTableView和QTreeView。但是对于一些难以用现有的方式来呈现数据,这时,可以创建我们自己的视图子类并将其用做模型数据的可视化来解决这一问题。本文通过Python3+pyqt5实现了python Qt GUI 快速编程的16章的例子。

#!/usr/bin/env python3

import gzip

import os

import platform

import sys

from PyQt5.QtCore import (QAbstractTableModel, QDateTime, QModelIndex,

QSize, QTimer, QVariant, Qt,pyqtSignal)

from PyQt5.QtGui import ( QColor, QCursor, QFont,

QFontDatabase, QFontMetrics, QPainter, QPalette, QPixmap)

from PyQt5.QtWidgets import QApplication,QDialog,QHBoxLayout, QLabel, QMessageBox,QScrollArea, QSplitter, QTableView,QWidget

(TIMESTAMP, TEMPERATURE, INLETFLOW, TURBIDITY, CONDUCTIVITY,

COAGULATION, RAWPH, FLOCCULATEDPH) = range(8)

TIMESTAMPFORMAT = "yyyy-MM-dd hh:mm"

class WaterQualityModel(QAbstractTableModel):

def __init__(self, filename):

super(WaterQualityModel, self).__init__()

self.filename = filename

self.results = []

def load(self):

self.beginResetModel()

exception = None

fh = None

try:

if not self.filename:

raise IOError("no filename specified for loading")

self.results = []

line_data = gzip.open(self.filename).read()

for line in line_data.decode("utf8").splitlines():

parts = line.rstrip().split(",")

date = QDateTime.fromString(parts[0] + ":00",

Qt.ISODate)

result = [date]

for part in parts[1:]:

result.append(float(part))

self.results.append(result)

except (IOError, ValueError) as e:

exception = e

finally:

if fh is not None:

fh.close()

self.endResetModel()

if exception is not None:

raise exception

def data(self, index, role=Qt.DisplayRole):

if (not index.isValid() or

not (0 <= index.row() < len(self.results))):

return QVariant()

column = index.column()

result = self.results[index.row()]

if role == Qt.DisplayRole:

item = result[column]

if column == TIMESTAMP:

#item = item.toString(TIMESTAMPFORMAT)

item=item

else:

#item = QString("%1").arg(item, 0, "f", 2)

item = "{0:.2f}".format(item)

return item

elif role == Qt.TextAlignmentRole:

if column !&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值