您的位置:首页 > 编程语言 > Python开发

python3+PyQt5 使用三种不同的简便项窗口部件显示数据

2017-12-01 18:35 996 查看

python3+PyQt5 使用三种不同的简便项窗口部件显示数据

http://blog.sina.com.cn/s/blog_c22e36090102x3m5.html

本文通过将同一个数据集在三种不同的简便项窗口部件中显示。三个窗口的数据得到实时的同步,数据和视图分离。当添加或删除数据行,三个不同的视图均保持同步。数据将保存在本地文件中,而非数据库。对于小型和临时性数据集来说,这些简便窗口部件非常有用,可以用在非单独数据集中-数据自身的显示,编辑和存储。

所使用的数据集:

/home/yrd/eric_workspace/chap14/ships_conv/ships.py

#!/usr/bin/env python3

import platform

from PyQt5.QtCore import QDataStream, QFile,QIODevice,Qt

from PyQt5.QtWidgets import QApplication

NAME, OWNER, COUNTRY, DESCRIPTION, TEU = range(5)

MAGIC_NUMBER = 0x570C4

FILE_VERSION = 1

class Ship(object):

 
   def__init__(self, name, owner, country, teu=0, description=""):

       self.name = name

       self.owner = owner

       self.country = country

       self.teu = teu

       self.description = description

    def__hash__(self):

       return super(Ship, self).__hash__()

    def__lt__(self, other):

       return bool(self.name.lower()

    def__eq__(self, other):

       return bool(self.name.lower()==other.name.lower())

class ShipContainer(object):

    def__init__(self, filename=""):

       self.filename = filename

       self.dirty = False

       self.ships = {}

       self.owners = set()

       self.countries = set()

    defship(self, identity):

       return self.ships.get(identity)

       

    defaddShip(self, ship):

       self.ships[id(ship)] = ship

       self.owners.add(str(ship.owner))

       self.countries.add(str(ship.country))

       self.dirty = True

    defremoveShip(self, ship):

       del self.ships[id(ship)]

       del ship

       self.dirty = True

    def__len__(self):

       return len(self.ships)

    def__iter__(self):

       for ship in self.ships.values():

           yield ship

    definOrder(self):

       return sorted(self.ships.values())

    definCountryOwnerOrder(self):

       return sorted(self.ships.values(),

                     key=lambda x: (x.country, x.owner, x.name))

    defload(self):
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: