1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
| #!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Thu Aug 6 16:50:04 2020
@author: antoine
"""
import sys
from PyQt5 import uic
from PyQt5.QtWidgets import QWidget
from PyQt5.QtCore import QDate
class HorseDescriptionWidget(QWidget):
"widget to describe a horse"
def __init__(self, studdb, horse = None):
QWidget.__init__(self)
uic.loadUi('./view/horse_description_widget.ui', self) # Load the .ui file
self.dtb = studdb
self.horse = horse
# init combobox
self.cb_breed.update(self.dtb, self.dtb.table_breed.get_breeds, obj=None)
self.cb_color.update(self.dtb, self.dtb.table_color.get_colors, obj=None)
self.cb_sex.update(self.dtb, self.dtb.table_sex.get_sexes, obj=None)
# set horse
self.set_horse(self.horse)
#signals
# mise à jour par pushbutton (supprimé)
#self.pushButton.clicked.connect(self.save_changes)
# mise à jour auto
self.line_name.editingFinished.connect(self.save_changes)
self.dateEdit.dateChanged.connect(self.save_changes)
self.cb_breed.currentIndexChanged.connect(self.save_changes)
self.cb_color.currentIndexChanged.connect(self.save_changes)
self.cb_sex.currentIndexChanged.connect(self.save_changes)
def save_changes(self):
"update horse data"
name = self.line_name.text()
breed = self.cb_breed.get_obj()
color = self.cb_color.get_obj()
sex = self.cb_sex.get_obj()
birthdate = self.dateEdit.date().toString("yyyy-MM-dd")
print(name, breed, color, sex, birthdate)
# print(breed in self.dtb.table_breed.get_breeds())
self.dtb.table_horse.update_horse(self.horse.dtb_id, name, sex.dtb_id,
color.dtb_id, birthdate, breed.dtb_id)
def set_horse(self, horse = None):
"set horse to display"
self.horse = horse
# set horse in description tab
if self.horse is not None :
self.setEnabled(True)
self.line_name.setText(self.horse.get_name())
dob = self.horse.get_birthdate()
self.dateEdit.setDate(QDate(dob.year, dob.month, dob.day))
self.cb_breed.set_obj(self.horse.get_breed())
self.cb_color.set_obj(self.horse.get_color())
self.cb_sex.set_obj(self.horse.get_sex())
else:
self.setEnabled(False)
if __name__ == '__main__':
from PyQt5.QtWidgets import QApplication
from model.studdb import StudDb
from model.studdb import Horse
app = QApplication(sys.argv)
dtb = StudDb("/home/antoine/Bureau/studmanager/src/sample/demo.sqlite")
#horse = dtb.table_horse.get_horses()[1]
horse1 = Horse(dtb, 1)
horse2 = Horse(dtb, 2)
#*OK
# widget = HorseDescriptionWidget(dtb, horse1)
# pas OK
widget = HorseDescriptionWidget(dtb, None)
widget.set_horse(horse1)
# pas OK
# widget = HorseDescriptionWidget(dtb, horse2)
# widget.set_horse(horse1)
widget.show()
sys.exit(app.exec_()) |
Partager