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):
相关文章推荐
- python3+PyQt5 使用三种不同的简便项窗口部件显示数据
- python3+PyQt5 使用自定义模型保存数据并通过不同视图形式展示数据
- python3+PyQt5 使用自定义模型保存数据并通过不同视图形式展示数据
- python3+PyQt5 自定义窗口部件--使用窗口部件样式表
- 使用Gtreamer获得摄像头数据并显示(Webcam streaming using Python--pyGTK, wxPython and Gstreamer)
- iPhone使用委托在不同的窗口之间传递数据
- iphone 使用委托(delegate)在不同的窗口之间传递数据
- DataGrid中使用CheckBox时根据帮定的数据显示不同的效果
- 【委托】 IOS开发使用委托delegate在不同窗口之间传递数据
- iphone 使用委托(delegate)在不同的窗口之间传递数据
- iphone 使用委托(delegate)在不同的窗口之间传递数据
- IOS开发使用委托delegate在不同窗口之间传递数据
- IOS开发使用委托delegate在不同窗口之间传递数据
- PHP连接mysql数据库,调用Google Map显示不同地方地图信息,使用Javascript弹出悬浮信息窗口展示。
- iPhone使用委托在不同的窗口之间传递数据
- 使用委托(delegate)在不同的窗口之间传递数据
- 使用百度地图BMap.InfoWindow,分别显示不同的信息窗口
- iphone 使用委托(delegate)在不同的窗口之间传递数据
- 【转】IOS开发使用委托delegate在不同窗口之间传递数据
- 使用委托(delegate)在不同的窗口之间传递数据