def __init__(self, kunde, neu=True, edit=False): # Konstruktor der Superklasse aufrufen QtWidgets.QDialog.__init__(self, flags=QtCore.Qt.Window | QtCore.Qt.FramelessWindowHint) try: self.ui = uic.loadUi('ressource/ui/kundenauswahl.ui', self) except: print('Kann UI-Datei nicht laden!') sys.exit(1) self.showFullScreen() self.speicher = Speicher() self.kunde = kunde if not self.kunde: self.kunde = Kunde() if not neu: self.ui.button_neu.setStyleSheet('display:none;') self.ui.button_neu.setEnabled(False) # Soll am Ende immer ein Fenster zum Bearbetien der Kundendaten ausgerufen werden? self.edit = edit self.shift = False self.capslock = False self.ui.input_text.setText(u'%s' % self.kunde.getErsteTelefon()) self.ui.input_text.selectAll() self.updateVorschlaege() self.updateButtonLabels() self.connectSlots()
def neu(self): currentText = str(self.ui.input_text.text()) self.kunde = Kunde() # Neuen Kunde anlegen if currentText.isdigit(): self.kunde.addKontakt('telefon', currentText) else: self.kunde.setName(currentText.title()) self.kunde = showKundendatenDialog(self.kunde) if self.kunde: self.speicher.speichereKunde(self.kunde) self.close()
def __init__(self, kunde): # Konstruktor der Superklasse aufrufen QtWidgets.QDialog.__init__(self, flags=QtCore.Qt.Window | QtCore.Qt.FramelessWindowHint) try: self.ui = uic.loadUi('ressource/ui/bioanlieferung.ui', self) except: print('Kann UI-Datei nicht laden!') sys.exit(1) self.showFullScreen() self.kunde = kunde if not self.kunde: self.kunde = Kunde() oeko_kontrollstellen = [ u"DE-ÖKO-001 (BCS Öko-Garantie)", u"DE-ÖKO-003 (Lacon)", u"DE-ÖKO-005 (IMO)", u"DE-ÖKO-006 (ABCERT)", u"DE-ÖKO-007 (Prüfverein Ökologische Landbauprodukte)", u"DE-ÖKO-009 (LC Landwirtschafts-Consulting)", u"DE-ÖKO-012 (AGRECO)", u"DE-ÖKO-013 (QC & I)", u"DE-ÖKO-021 (Grünstempel)", u"DE-ÖKO-022 (Kontrollverein ökologischer Landbau)", u"DE-ÖKO-024 (Ecocert)", u"DE-ÖKO-034 (Fachgesellschaft ÖKO-Kontrolle)", u"DE-ÖKO-037 (ÖKOP)", u"DE-ÖKO-039 (GfRS)", u"DE-ÖKO-044 (Ars Probata)", u"DE-ÖKO-060 (QAL)", u"DE-ÖKO-064 (ABC GmbH)", u"DE-ÖKO-070 (Peterson CU)", ] for kst in oeko_kontrollstellen: self.ui.combo_biokontrollstelle.addItem(kst) self.shift = False self.capslock = False self.fillInputs() self.currentInput = self.ui.input_menge self.currentInput.setFocus() kundenwidget = KundenAuswahlWidget(self.kunde) kundenwidget.setParent(self.ui.widget_kundendaten) kundenwidget.show() self.connectSlots() self.toggleShift(False) # Klein damit Zahlen sichtbar sind.
class KundenAuswahlDialog(QtWidgets.QDialog): keys = { '1': ('1', '!'), '2': ('2', u'"'), '3': ('3', u'§'), '4': ('4', u'€'), '5': ('5', u'%'), '6': ('6', u'&'), '7': ('7', '/'), '8': ('8', '('), '9': ('9', ')'), '0': ('0', '='), 'ss': (u'ß', '?'), 'accent': (u'\'', u'\''), 'q': ('Q', 'Q'), 'w': ('W', 'W'), 'e': ('E', 'E'), 'r': ('R', 'R'), 't': ('T', 'T'), 'z': ('Z', 'Z'), 'u': ('U', 'U'), 'i': ('I', 'I'), 'o': ('O', 'O'), 'p': ('P', 'P'), 'ue': (u'Ü', u'Ü'), 'a': ('A', 'A'), 's': ('S', 'S'), 'd': ('D', 'D'), 'f': ('F', 'F'), 'g': ('G', 'G'), 'h': ('H', 'H'), 'j': ('J', 'J'), 'k': ('K', 'K'), 'l': ('L', 'L'), 'oe': (u'Ö', u'Ö'), 'ae': (u'Ä', u'Ä'), 'y': ('Y', 'Y'), 'x': ('X', 'X'), 'c': ('C', 'C'), 'v': ('V', 'V'), 'b': ('B', 'B'), 'n': ('N', 'N'), 'm': ('M', 'M'), 'comma': (',', ';'), 'dot': ('.', ':'), 'minus': ('-', '_'), 'space': (' ', ' '), } def __init__(self, kunde, neu=True, edit=False): # Konstruktor der Superklasse aufrufen QtWidgets.QDialog.__init__(self, flags=QtCore.Qt.Window | QtCore.Qt.FramelessWindowHint) try: self.ui = uic.loadUi('ressource/ui/kundenauswahl.ui', self) except: print('Kann UI-Datei nicht laden!') sys.exit(1) self.showFullScreen() self.speicher = Speicher() self.kunde = kunde if not self.kunde: self.kunde = Kunde() if not neu: self.ui.button_neu.setStyleSheet('display:none;') self.ui.button_neu.setEnabled(False) # Soll am Ende immer ein Fenster zum Bearbetien der Kundendaten ausgerufen werden? self.edit = edit self.shift = False self.capslock = False self.ui.input_text.setText(u'%s' % self.kunde.getErsteTelefon()) self.ui.input_text.selectAll() self.updateVorschlaege() self.updateButtonLabels() self.connectSlots() def clearInput(self): self.ui.input_text.clear() self.updateVorschlaege() def getValue(self): currentText = str(self.ui.input_text.text()) return currentText def updateVorschlaege(self, foo=None): self.ui.listWidget_vorschlaege.blockSignals(True) self.ui.listWidget_vorschlaege.clear() currentText = str(self.ui.input_text.text()).lower() if len(currentText) < 3: self.ui.listWidget_vorschlaege.blockSignals(False) return filteredList = self.speicher.sucheKunde(currentText) for item in filteredList: entry = KundenAuswahlWidget(item) item = QtWidgets.QListWidgetItem() item.setSizeHint(QtCore.QSize(300, 90)) self.ui.listWidget_vorschlaege.addItem(item) self.ui.listWidget_vorschlaege.setItemWidget(item, entry) self.ui.listWidget_vorschlaege.blockSignals(False) def keyPressed(self, key): return lambda: self.realKeyPressed(key) def realKeyPressed(self, key): index = 0 if self.shift: index = 1 if key in self.keys.keys(): self.ui.input_text.insert(self.keys[key][index]) if self.shift and not self.capslock: self.toggleShift() elif key == 'backspace': self.ui.input_text.backspace() self.cursorPositionChanged() def cursorPositionChanged(self, int1=0, int2=0): # In diesem Dialogfeld brauchen wir keine automatische Umschaltung auf Großbuchstaben pass def capslockClicked(self): self.capslock = not self.capslock self.shift = self.capslock self.ui.button_capslock.setChecked(self.capslock) self.updateButtonLabels() def toggleShift(self): self.shift = not self.shift self.ui.button_shiftl.setChecked(self.shift) self.ui.button_shiftr.setChecked(self.shift) if not self.shift: self.capslock = False self.ui.button_capslock.setChecked(False) self.updateButtonLabels() def updateButtonLabels(self): index = 0 if self.shift: index = 1 for key in self.keys.keys(): label = self.keys[key][index] # Ein & markiert einen Hotkey, das muss verdoppelt werden if label == '&': label = '&&' getattr(self.ui, 'button_%s' % key).setText(label) def listItemClicked(self, listItem): if not listItem: return widget = self.ui.listWidget_vorschlaege.itemWidget(listItem) kunde = widget.kunde self.kunde = kunde self.ok() def neu(self): currentText = str(self.ui.input_text.text()) self.kunde = Kunde() # Neuen Kunde anlegen if currentText.isdigit(): self.kunde.addKontakt('telefon', currentText) else: self.kunde.setName(currentText.title()) self.kunde = showKundendatenDialog(self.kunde) if self.kunde: self.speicher.speichereKunde(self.kunde) self.close() def ok(self): print('ok(edit=%s)' % self.edit) if not self.kunde: # Wenn nur ein Kunde in der Auswahlliste ist, ist es der if self.ui.listWidget_vorschlaege.count() == 1: widget = self.ui.listWidget_vorschlaege.itemWidget( self.ui.listWidget_vorschlaege.item(0)) self.kunde = widget.kunde else: QtWidgets.QMessageBox.warning( self, u'Fehler', u'Kein Kunde gewählt', buttons=QtWidgets.QMessageBox.Ok, defaultButton=QtWidgets.QMessageBox.Ok) return if self.edit: self.kunde = showKundendatenDialog(self.kunde) self.speicher.speichereKunde(self.kunde) self.close() def connectSlots(self): for key in self.keys.keys(): if getattr(self.ui, 'button_%s' % key): getattr(self.ui, 'button_%s' % key).clicked.connect( self.keyPressed(key)) else: print('unknown button: button_%s' % key) self.ui.button_backspace.clicked.connect(self.keyPressed('backspace')) self.ui.button_clear.clicked.connect(self.clearInput) self.ui.button_cancel.clicked.connect(self.close) self.ui.button_neu.clicked.connect(self.neu) self.ui.button_enter.clicked.connect(self.ok) self.ui.button_shiftl.clicked.connect(self.toggleShift) self.ui.button_shiftr.clicked.connect(self.toggleShift) self.ui.button_capslock.clicked.connect(self.capslockClicked) #self.ui.listWidget_vorschlaege.currentTextChanged.connect(self.listItemClicked) self.ui.input_text.textChanged[str].connect(self.updateVorschlaege) self.ui.input_text.cursorPositionChanged[int, int].connect( self.cursorPositionChanged) self.ui.input_text.selectionChanged.connect(self.cursorPositionChanged) self.ui.listWidget_vorschlaege.itemClicked.connect( self.listItemClicked)
class KundendatenDialog(QtWidgets.QDialog): keys = { '1': ('1', '!'), '2': ('2', u'"'), '3': ('3', u'§'), '4': ('4', u'€'), '5': ('5', u'%'), '6': ('6', u'&'), '7': ('7', '/'), '8': ('8', '('), '9': ('9', ')'), '0': ('0', '='), 'ss': (u'ß', '?'), 'accent': (u'\'', u'\''), 'q': ('q', 'Q'), 'w': ('w', 'W'), 'e': ('e', 'E'), 'r': ('r', 'R'), 't': ('t', 'T'), 'z': ('z', 'Z'), 'u': ('u', 'U'), 'i': ('i', 'I'), 'o': ('o', 'O'), 'p': ('p', 'P'), 'ue': (u'ü', u'Ü'), 'a': ('a', 'A'), 's': ('s', 'S'), 'd': ('d', 'D'), 'f': ('f', 'F'), 'g': ('g', 'G'), 'h': ('h', 'H'), 'j': ('j', 'J'), 'k': ('k', 'K'), 'l': ('l', 'L'), 'oe': (u'ö', u'Ö'), 'ae': (u'ä', u'Ä'), 'y': ('y', 'Y'), 'x': ('x', 'X'), 'c': ('c', 'C'), 'v': ('v', 'V'), 'b': ('b', 'B'), 'n': ('n', 'N'), 'm': ('m', 'M'), 'comma': (',', ';'), 'dot': ('.', ':'), 'minus': ('-', '_'), 'space': (' ', ' '), } def __init__(self, kunde): # Konstruktor der Superklasse aufrufen QtWidgets.QDialog.__init__(self, flags=QtCore.Qt.Window | QtCore.Qt.FramelessWindowHint) try: self.ui = uic.loadUi('ressource/ui/kundendaten.ui', self) except: print('Kann UI-Datei nicht laden!') sys.exit(1) self.showFullScreen() self.kunde = kunde if not self.kunde: self.kunde = Kunde() oeko_kontrollstellen = [ u"DE-ÖKO-001 (BCS Öko-Garantie)", u"DE-ÖKO-003 (Lacon)", u"DE-ÖKO-005 (IMO)", u"DE-ÖKO-006 (ABCERT)", u"DE-ÖKO-007 (Prüfverein Ökologische Landbauprodukte)", u"DE-ÖKO-009 (LC Landwirtschafts-Consulting)", u"DE-ÖKO-012 (AGRECO)", u"DE-ÖKO-013 (QC & I)", u"DE-ÖKO-021 (Grünstempel)", u"DE-ÖKO-022 (Kontrollverein ökologischer Landbau)", u"DE-ÖKO-024 (Ecocert)", u"DE-ÖKO-034 (Fachgesellschaft ÖKO-Kontrolle)", u"DE-ÖKO-037 (ÖKOP)", u"DE-ÖKO-039 (GfRS)", u"DE-ÖKO-044 (Ars Probata)", u"DE-ÖKO-060 (QAL)", u"DE-ÖKO-064 (ABC GmbH)", u"DE-ÖKO-070 (Peterson CU)", ] for kst in oeko_kontrollstellen: self.ui.combo_biokontrollstelle.addItem(kst) self.shift = False self.capslock = False self.fillTelefon() self.fillInputs() self.currentInput = self.ui.input_nachname self.currentInput.setFocus() self.update() self.connectSlots() self.toggleShift(True) # Am Anfang groß schreiben def fillInputs(self): if self.kunde['firma']: self.ui.input_firma.setText(self.kunde['firma']) if self.kunde['vorname']: self.ui.input_vorname.setText(self.kunde['vorname']) if self.kunde['nachname']: self.ui.input_nachname.setText(self.kunde['nachname']) if self.kunde['strasse']: self.ui.input_strasse.setText(self.kunde['strasse']) if self.kunde['plz']: self.ui.input_plz.setText(self.kunde['plz']) if self.kunde['ort']: self.ui.input_ort.setText(self.kunde['ort']) if self.kunde.isBio(): self.ui.button_bio.setChecked(True) self.ui.combo_biokontrollstelle.setEnabled(True) kst = self.kunde.getOekoKontrollstelle() idx = self.ui.combo_biokontrollstelle.findText( kst, flags=QtCore.Qt.MatchStartsWith) if idx == -1: self.ui.combo_biokontrollstelle.setEditText(kst) else: self.ui.combo_biokontrollstelle.setCurrentIndex(idx) else: self.ui.button_bio.setChecked(False) self.ui.combo_biokontrollstelle.clearEditText() self.ui.combo_biokontrollstelle.setEnabled(False) def fillTelefon(self): telefon = set() for t in self.kunde.listKontakte(): if t['typ'] in ['mobil', 'telefon']: telefon.add(formatPhoneNumber(t['wert'])) self.ui.input_telefon.setText(' / '.join(telefon)) def keyPressed(self, key): return lambda: self.realKeyPressed(key) def realKeyPressed(self, key): index = 0 if self.shift: index = 1 if key in self.keys.keys(): self.currentInput.insert(self.keys[key][index]) if self.shift and not self.capslock: self.toggleShift() elif key == 'backspace': self.currentInput.backspace() self.cursorPositionChanged() def cursorPositionChanged(self, int1=0, int2=0): if self.ui.input_plz == self.currentInput: self.toggleShift(False) return if len(self.currentInput.text() ) == 0 or self.currentInput.cursorPosition() == 0: self.toggleShift(True) else: if self.ui.input_strasse == self.currentInput and self.currentInput.text( )[self.currentInput.cursorPosition() - 1] == ' ': # Bei der Straße wird am Anfang groß geschrieben, nicht aber nach einem Leerzeichen self.toggleShift(False) return if self.currentInput.text()[self.currentInput.cursorPosition() - 1] in [' ', ',', '-']: self.toggleShift(True) else: self.toggleShift(False) def capslockClicked(self): self.capslock = not self.capslock self.shift = self.capslock self.ui.button_capslock.setChecked(self.capslock) self.updateButtonLabels() def toggleShift(self, state=None): if state == False or state == True: # None ist beides nicht self.shift = bool(state) else: self.shift = not self.shift self.ui.button_shiftl.setChecked(self.shift) self.ui.button_shiftr.setChecked(self.shift) if not self.shift: self.capslock = False self.ui.button_capslock.setChecked(False) self.updateButtonLabels() def updateButtonLabels(self): index = 0 if self.shift: index = 1 for key in self.keys.keys(): label = self.keys[key][index] # Ein & markiert einen Hotkey, das muss verdoppelt werden if label == '&': label = '&&' getattr(self.ui, 'button_%s' % key).setText(label) def ok(self): self.kunde.setName(firma=str(self.ui.input_firma.text()), vorname=str(self.ui.input_vorname.text()), nachname=str(self.ui.input_nachname.text())) self.kunde.setAdresse(strasse=str(self.ui.input_strasse.text()), plz=str(self.ui.input_plz.text()), ort=str(self.ui.input_ort.text())) kst = str(self.ui.combo_biokontrollstelle.currentText()) if '(' in kst: kst = kst[:kst.find('(')].strip() self.kunde.setOekoKontrollstelle(kst) self.close() def focusChange(self, new): if new == self.ui.input_telefon: showPhoneNumberInputDialog(self.kunde) self.fillTelefon() elif type(new) == QtWidgets.QLineEdit: self.currentInput = new self.cursorPositionChanged() elif type(new) == QtWidgets.QComboBox: self.currentInput = new.lineEdit() self.cursorPositionChanged() def focusSlot(self, widget): def func(): self.focusChange(widget) return func def eventFilter(self, qobject, qevent): if qevent.type() == QtCore.QEvent.MouseButtonPress: qobject.clicked() return False def connectSlots(self): for key in self.keys.keys(): getattr(self.ui, 'button_%s' % key).clicked.connect(self.keyPressed(key)) self.ui.button_backspace.clicked.connect(self.keyPressed('backspace')) self.ui.button_ok.clicked.connect(self.ok) self.ui.button_enter.clicked.connect(self.ok) self.ui.button_shiftl.clicked.connect(self.toggleShift) self.ui.button_shiftr.clicked.connect(self.toggleShift) self.ui.button_capslock.clicked.connect(self.capslockClicked) self.ui.input_firma.clicked = self.focusSlot(self.ui.input_firma) self.ui.input_firma.installEventFilter(self) self.ui.input_vorname.clicked = self.focusSlot(self.ui.input_vorname) self.ui.input_vorname.installEventFilter(self) self.ui.input_nachname.clicked = self.focusSlot(self.ui.input_nachname) self.ui.input_nachname.installEventFilter(self) self.ui.input_telefon.clicked = self.focusSlot(self.ui.input_telefon) self.ui.input_telefon.installEventFilter(self) self.ui.input_strasse.clicked = self.focusSlot(self.ui.input_strasse) self.ui.input_strasse.installEventFilter(self) self.ui.input_plz.clicked = self.focusSlot(self.ui.input_plz) self.ui.input_plz.installEventFilter(self) self.ui.input_ort.clicked = self.focusSlot(self.ui.input_ort) self.ui.input_ort.installEventFilter(self) self.ui.combo_biokontrollstelle.clicked = self.focusSlot( self.ui.combo_biokontrollstelle) self.ui.combo_biokontrollstelle.installEventFilter(self)
self.ui.input_firma.installEventFilter(self) self.ui.input_vorname.clicked = self.focusSlot(self.ui.input_vorname) self.ui.input_vorname.installEventFilter(self) self.ui.input_nachname.clicked = self.focusSlot(self.ui.input_nachname) self.ui.input_nachname.installEventFilter(self) self.ui.input_telefon.clicked = self.focusSlot(self.ui.input_telefon) self.ui.input_telefon.installEventFilter(self) self.ui.input_strasse.clicked = self.focusSlot(self.ui.input_strasse) self.ui.input_strasse.installEventFilter(self) self.ui.input_plz.clicked = self.focusSlot(self.ui.input_plz) self.ui.input_plz.installEventFilter(self) self.ui.input_ort.clicked = self.focusSlot(self.ui.input_ort) self.ui.input_ort.installEventFilter(self) self.ui.combo_biokontrollstelle.clicked = self.focusSlot( self.ui.combo_biokontrollstelle) self.ui.combo_biokontrollstelle.installEventFilter(self) def showKundendatenDialog(kunde=None): dialog = KundendatenDialog(kunde) dialog.show() dialog.exec_() # blockiert bis der Dialog geschlossen wird return dialog.kunde if __name__ == "__main__": app = QtWidgets.QApplication(sys.argv) k = Kunde() showKundendatenDialog(k) print(k)
class BioAnlieferungDialog(QtWidgets.QDialog): keys = { '1': ('1', '!'), '2': ('2', u'"'), '3': ('3', u'§'), '4': ('4', u'€'), '5': ('5', u'%'), '6': ('6', u'&'), '7': ('7', '/'), '8': ('8', '('), '9': ('9', ')'), '0': ('0', '='), 'ss': (u'ß', '?'), 'accent': (u'\'', u'\''), 'q': ('q', 'Q'), 'w': ('w', 'W'), 'e': ('e', 'E'), 'r': ('r', 'R'), 't': ('t', 'T'), 'z': ('z', 'Z'), 'u': ('u', 'U'), 'i': ('i', 'I'), 'o': ('o', 'O'), 'p': ('p', 'P'), 'ue': (u'ü', u'Ü'), 'a': ('a', 'A'), 's': ('s', 'S'), 'd': ('d', 'D'), 'f': ('f', 'F'), 'g': ('g', 'G'), 'h': ('h', 'H'), 'j': ('j', 'J'), 'k': ('k', 'K'), 'l': ('l', 'L'), 'oe': (u'ö', u'Ö'), 'ae': (u'ä', u'Ä'), 'y': ('y', 'Y'), 'x': ('x', 'X'), 'c': ('c', 'C'), 'v': ('v', 'V'), 'b': ('b', 'B'), 'n': ('n', 'N'), 'm': ('m', 'M'), 'comma': (',', ';'), 'dot': ('.', ':'), 'minus': ('-', '_'), 'space': (' ', ' '), } def __init__(self, kunde): # Konstruktor der Superklasse aufrufen QtWidgets.QDialog.__init__(self, flags=QtCore.Qt.Window | QtCore.Qt.FramelessWindowHint) try: self.ui = uic.loadUi('ressource/ui/bioanlieferung.ui', self) except: print('Kann UI-Datei nicht laden!') sys.exit(1) self.showFullScreen() self.kunde = kunde if not self.kunde: self.kunde = Kunde() oeko_kontrollstellen = [ u"DE-ÖKO-001 (BCS Öko-Garantie)", u"DE-ÖKO-003 (Lacon)", u"DE-ÖKO-005 (IMO)", u"DE-ÖKO-006 (ABCERT)", u"DE-ÖKO-007 (Prüfverein Ökologische Landbauprodukte)", u"DE-ÖKO-009 (LC Landwirtschafts-Consulting)", u"DE-ÖKO-012 (AGRECO)", u"DE-ÖKO-013 (QC & I)", u"DE-ÖKO-021 (Grünstempel)", u"DE-ÖKO-022 (Kontrollverein ökologischer Landbau)", u"DE-ÖKO-024 (Ecocert)", u"DE-ÖKO-034 (Fachgesellschaft ÖKO-Kontrolle)", u"DE-ÖKO-037 (ÖKOP)", u"DE-ÖKO-039 (GfRS)", u"DE-ÖKO-044 (Ars Probata)", u"DE-ÖKO-060 (QAL)", u"DE-ÖKO-064 (ABC GmbH)", u"DE-ÖKO-070 (Peterson CU)", ] for kst in oeko_kontrollstellen: self.ui.combo_biokontrollstelle.addItem(kst) self.shift = False self.capslock = False self.fillInputs() self.currentInput = self.ui.input_menge self.currentInput.setFocus() kundenwidget = KundenAuswahlWidget(self.kunde) kundenwidget.setParent(self.ui.widget_kundendaten) kundenwidget.show() self.connectSlots() self.toggleShift(False) # Klein damit Zahlen sichtbar sind. def fillInputs(self): kst = self.kunde.getOekoKontrollstelle() idx = self.ui.combo_biokontrollstelle.findText( kst, flags=QtCore.Qt.MatchStartsWith) if idx == -1: self.ui.combo_biokontrollstelle.setEditText(kst) else: self.ui.combo_biokontrollstelle.setCurrentIndex(idx) self.ui.dateEdit.setDate(datetime.date.today()) def keyPressed(self, key): return lambda: self.realKeyPressed(key) def realKeyPressed(self, key): index = 0 if self.shift: index = 1 if key in self.keys.keys(): self.currentInput.insert(self.keys[key][index]) if self.shift and not self.capslock: self.toggleShift() elif key == 'backspace': self.currentInput.backspace() self.cursorPositionChanged() def cursorPositionChanged(self, int1=0, int2=0): # In diesem Dialogfeld brauchen wir keine automatische Umschaltung auf Großbuchstaben pass def capslockClicked(self): self.capslock = not self.capslock self.shift = self.capslock self.ui.button_capslock.setChecked(self.capslock) self.updateButtonLabels() def toggleShift(self, state=None): if state == False or state == True: # None ist beides nicht self.shift = bool(state) else: self.shift = not self.shift self.ui.button_shiftl.setChecked(self.shift) self.ui.button_shiftr.setChecked(self.shift) if not self.shift: self.capslock = False self.ui.button_capslock.setChecked(False) self.updateButtonLabels() def updateButtonLabels(self): index = 0 if self.shift: index = 1 for key in self.keys.keys(): label = self.keys[key][index] # Ein & markiert einen Hotkey, das muss verdoppelt werden if label == '&': label = '&&' getattr(self.ui, 'button_%s' % key).setText(label) def cancel(self): self.close() def ok(self): kst = str(self.ui.combo_biokontrollstelle.currentText()) if '(' in kst: kst = kst[:kst.find('(')].strip() self.kunde.setOekoKontrollstelle(kst) anlieferdatum = self.ui.dateEdit.date().toPyDate() data = { 'kunde': self.kunde.ID(), 'adresse': self.kunde.getAdresse(), 'menge': str(self.ui.input_menge.text()), 'kontrollstelle': kst, 'obstart': {}, 'anlieferdatum': anlieferdatum.isoformat(), } if not data['menge']: QtWidgets.QMessageBox.warning( self, u'Fehler', u'Obst-Menge fehlt!', buttons=QtWidgets.QMessageBox.Ok, defaultButton=QtWidgets.QMessageBox.Ok) return for key in ['apfel', 'birne', 'quitte']: if getattr(self.ui, 'button_%s' % key).isChecked(): data['obstart'][key] = True s = Speicher() s.speichereBioLieferschein(data) pdffile = BioLieferschein(data) c = cups.Connection() c.printFile(c.getDefault(), pdffile, 'Bio-Lieferschein %s' % pdffile, PRINTER_OPTIONS) self.close() def focusChange(self, new): self.currentInput = new self.cursorPositionChanged() def focusSlot(self, widget): def func(): self.focusChange(widget) return func def eventFilter(self, qobject, qevent): if qevent.type() == QtCore.QEvent.MouseButtonPress: qobject.clicked() return False def connectSlots(self): for key in self.keys.keys(): getattr(self.ui, 'button_%s' % key).clicked.connect(self.keyPressed(key)) self.ui.button_backspace.clicked.connect(self.keyPressed('backspace')) self.ui.button_ok.clicked.connect(self.ok) self.ui.button_cancel.clicked.connect(self.cancel) self.ui.button_enter.clicked.connect(self.ok) self.ui.button_shiftl.clicked.connect(self.toggleShift) self.ui.button_shiftr.clicked.connect(self.toggleShift) self.ui.button_capslock.clicked.connect(self.capslockClicked) self.ui.input_menge.clicked = self.focusSlot(self.ui.input_menge) self.ui.input_menge.installEventFilter(self)
self.ui.listWidget.setCurrentRow(newindex) def deleteNumber(self, index): del self.kontakte[index] self.buildList() lastindex = self.ui.listWidget.count() - 1 self.ui.listWidget.setCurrentRow(lastindex) def connectSlots(self): for n in range(10): getattr(self.ui, "button_%i" % n).clicked.connect( self.numberPressed(str(n))) self.ui.button_backspace.clicked.connect(self.backspace) self.ui.button_more.clicked.connect(self.more) self.ui.button_clear.clicked.connect(self.clear) self.ui.button_ok.clicked.connect(self.ok) self.ui.button_abbrechen.clicked.connect(self.abbrechen) self.ui.listWidget.currentItemChanged.connect(self.listItemClicked) if __name__ == "__main__": app = QtWidgets.QApplication(sys.argv) from lib.Kunde import Kunde k = Kunde() #k.addKontakt('telefon', '071923455') #k.addKontakt('telefon', '0152345679') showPhoneNumberInputDialog(k) print('Telefon: »%s«' % k.listKontakte())