def on_validate(self): idx_counter = self.comboCounter.currentIndex() value_counter = int(self.lEdit.text()) if idx_counter == 0 or value_counter == "": self.close() return allcounters = Counter.findAll() counter = allcounters[idx_counter-1] r = Recording(counter.id, self.current_date, value_counter) r.insert() self.closed.emit() self.close()
DB.open('example.db') #### Add some counters elec = Counter("Electricité") elec.insert() print(elec) gaz = Counter("Gaz") gaz.insert() print(gaz) print("") #### List all the counters print("List all : ") allcounters = Counter.findAll() for c in allcounters: print(str(c)) #### Put some recordings r = Recording(elec.id, datetime.datetime.strptime("2015-10-01", "%Y-%m-%d"), 1000) r.insert() r = Recording(elec.id, datetime.datetime.strptime("2015-10-05", "%Y-%m-%d"), 1500) r.insert() r = Recording(gaz.id, datetime.datetime.strptime("2015-10-01", "%Y-%m-%d"), 100) r.insert() r = Recording(gaz.id, datetime.datetime.strptime("2015-10-10", "%Y-%m-%d"), 200)
def __init__(self, parent): super(RegisterDialog, self).__init__(parent) self.setModal(True) self.setWindowTitle("Registe a new counter entry") vbox = QVBoxLayout() # Setting up the widgets for selecting the counter hbox1 = QHBoxLayout() label = QLabel("Select the counter") hbox1.addWidget(label) self.comboCounter = QComboBox() self.comboCounter.addItem("None") allcounters = Counter.findAll() for c in allcounters: self.comboCounter.addItem(c.name) hbox1.addWidget(self.comboCounter) vbox.addLayout(hbox1) # Setting up the widgets for providing the value hbox2 = QHBoxLayout() label = QLabel("Value") hbox2.addWidget(label) self.lEdit = QLineEdit() hbox2.addWidget(self.lEdit) vbox.addLayout(hbox2) # Setting up the widgets to provide the date hbox3 = QHBoxLayout() label = QLabel("Date") hbox3.addWidget(label) self.calendar = QCalendarWidget() self.calendar.clicked.connect(self.on_cal_clicked) hbox3.addWidget(self.calendar) vbox.addLayout(hbox3) # Adding the push buttons to validate the entry of cancel it hbox4 = QHBoxLayout() okbutton = QPushButton("Ok") okbutton.clicked.connect(self.on_validate) hbox4.addWidget(okbutton) cancelbutton = QPushButton("Cancel") cancelbutton.clicked.connect(self.close) hbox4.addWidget(cancelbutton) vbox.addLayout(hbox4) self.setLayout(vbox) self.resize(QSize(100,100)) now = datetime.datetime.now() self.current_date = datetime.datetime(now.year, now.month, now.day, 12)
def setupTabs(self): #self.tabs.currentChanged.disconnect(self.currentTabChanged) while(self.tabs.count() > 0): self.tabs.removeTab(0) self.tables = {} allcounters = Counter.findAll() for c in allcounters: tab = QWidget(self.tabs) hl = QHBoxLayout() tab.setLayout(hl) recordings = Recording.findByIdCounter(c.id) tw = QTableWidget(len(recordings), 5) self.tables["%i"%c.id] = tw column_names = ("Id","Counter", "Date", "Value", "Remove ?") tw.setHorizontalHeaderLabels(column_names) # Fill the table with the recordings for i, r in enumerate(recordings): # The id of the recording in the table of recordings item = QTableWidgetItem("{}".format(r.id)) item.setFlags(QtCore.Qt.NoItemFlags) tw.setItem (i, 0, item) # The id of the associated counter item = QTableWidgetItem("{}".format(r.idcounter)) item.setFlags(QtCore.Qt.NoItemFlags) tw.setItem (i, 1, item) # The date when the recording has been made item = QTableWidgetItem(r.date.strftime("%Y-%m-%d %H:%M:%S")) item.setFlags(QtCore.Qt.NoItemFlags) tw.setItem (i, 2, item) # The value can be edited item = QTableWidgetItem("{}".format(r.value)) item.setFlags(QtCore.Qt.ItemIsEditable | QtCore.Qt.ItemIsEnabled) tw.setItem (i, 3, item) but = QPushButton("Remove") but.clicked.connect(partial(self.on_removeClicked, counter_id=c.id, recording_id=r.id)) #item = QTableWidgetItem(but) #tw.setItem(i, 4, but) #tw.setIndexWidget() tw.setCellWidget(i, 4, but) tw.cellChanged.connect(partial(self.on_cellChanged, counter_id=c.id)) # We allow sorting and we sort by decreasing date # to get the most recent recordings at the top tw.setSortingEnabled(True) tw.sortByColumn(2, QtCore.Qt.DescendingOrder) # Ajust the width of the columns to better see the contents tw.resizeColumnsToContents() tw.setFixedWidth(600) hl.addWidget(tw) #### Plot the data canvas = self.plot_data(recordings) hl.addWidget(canvas) self.tabs.addTab(tab,str(c.id) + "-" + c.name)