class MainForm(QDialog): def __init__(self, parent = None): QDialog.__init__(self, parent) # If a Nemu instance is already running, this is as far as we go self.connectToRunning() self.holdOpen = False self.menuItems = [] self.allItems = [] self.favorites = [] self.currentItem = None self.menuFile = os.path.expanduser('~/.nemu/menu') self.favoritesFile = os.path.expanduser('~/.nemu/favorites') self.settingsFile = os.path.expanduser('~/.nemu/settings') self.initSettings() self.server = QLocalServer() self.server.newConnection.connect(self.handleConnection) QLocalServer.removeServer('nemuSocket') self.server.listen('nemuSocket') self.configDir = os.path.expanduser('~/.nemu') if not os.path.isdir(self.configDir): os.mkdir(self.configDir) self.menuItems = self.loadConfig(self.menuFile, self.menuItems) self.favorites = self.loadConfig(self.favoritesFile, self.favorites) # Don't load directly into self.settings so we can add new default values as needed tempSettings = self.loadConfig(self.settingsFile, self.settings) for key, value in tempSettings.items(): self.settings[key] = value # This should never happen, but unfortunately bugs do, so clean up orphaned items. # We need to do this because these items won't show up in the UI, but may interfere with # merges if they duplicate something that is being merged in. self.menuItems[:] = [i for i in self.menuItems if i.parent == None or i.parent in self.menuItems] # Look for broken icon paths needSave = False for i in self.menuItems + self.favorites: if not os.path.exists(i.icon): i.findIcon() needSave = True if needSave: self.saveMenu() for i in self.menuItems: if not hasattr(i, 'imported'): i.imported = False self.setupUI() self.setContextMenuPolicy(Qt.ActionsContextMenu) self.createMenu(self) self.refresh(False) if len(self.menuItems) == 0: self.firstRun() self.show() self.keepaliveTimer = QTimer(self) self.keepaliveTimer.timeout.connect(self.keepalive) self.keepaliveTimer.start(60000) def initSettings(self): self.settings = dict() self.settings['width'] = 400 self.settings['height'] = 400 self.settings['quit'] = False self.settings['imported'] = [] self.settings['iconTheme'] = None def loadConfig(self, filename, default): if os.path.exists(filename): with open(filename, 'rb') as f: return cPickle.load(f) else: return default def setupUI(self): self.resize(self.settings['width'], self.settings['height']) self.setWindowFlags(Qt.FramelessWindowHint | Qt.CustomizeWindowHint | Qt.WindowStaysOnTopHint) #self.setWindowFlags(Qt.X11BypassWindowManagerHint) self.setWindowTitle('Nemu') self.setMouseTracking(True) iconPath = os.path.join(os.path.dirname(__file__), 'images') iconPath = os.path.join(iconPath, 'nemu.png') self.setWindowIcon(IconCache()[iconPath]) self.place() self.buttonListLayout = QVBoxLayout(self) self.setMargins(self.buttonListLayout) self.buttonLayout = QHBoxLayout() self.setMargins(self.buttonLayout) # Settings and Filter box self.filterLayout = QHBoxLayout() self.settingsButton = QPushButton() self.settingsButton.setIcon(QIcon(iconPath)) self.settingsButton.setMinimumHeight(35) self.settingsButton.clicked.connect(self.settingsClicked) self.filterLayout.addWidget(self.settingsButton, 0) self.filterLabel = QLabel("Filter") self.filterLayout.addWidget(self.filterLabel) self.filterBox = QLineEdit() self.filterBox.textChanged.connect(self.refresh) self.filterLayout.addWidget(self.filterBox) self.sizeGrip = QSizeGrip(self) self.sizeGrip.setMinimumSize(QSize(25, 25)) self.filterLayout.addWidget(self.sizeGrip, 0, Qt.AlignRight | Qt.AlignTop) self.buttonListLayout.addLayout(self.filterLayout) # Top buttons and labels self.backButton = QPushButton('Favorites') self.backButton.setMinimumHeight(35) self.backButton.clicked.connect(self.backClicked) self.buttonLayout.addWidget(self.backButton, 1) self.currentLabel = QLabel() self.currentLabel.setAlignment(Qt.AlignHCenter | Qt.AlignVCenter) self.buttonLayout.addWidget(self.currentLabel, 1) self.buttonListLayout.addLayout(self.buttonLayout, 0) # Menu item display self.listSplitter = QSplitter() self.buttonListLayout.addWidget(self.listSplitter, 1) self.leftList = ListWidget(self.clearListMouseOver) self.listSplitter.addWidget(self.leftList) self.rightList = ListWidget(self.clearListMouseOver) self.listSplitter.addWidget(self.rightList) # Has to be done after adding widgets to the splitter or the size will get reset again if 'splitterState' in self.settings: self.listSplitter.restoreState(self.settings['splitterState']) def setMargins(self, layout, margin = 0): layout.setSpacing(margin) layout.setContentsMargins(margin, margin, margin, margin) def createMenu(self, widget): addFavoriteAction = QAction('Add to Favorites', self) addFavoriteAction.triggered.connect(self.addFavoriteClicked) widget.insertAction(None, addFavoriteAction) addAction = QAction("New...", self) addAction.triggered.connect(self.newClicked) widget.insertAction(None, addAction) editAction = QAction("Edit...", self) editAction.triggered.connect(self.editClicked) widget.insertAction(None, editAction) deleteAction = QAction("Delete", self) deleteAction.triggered.connect(self.deleteClicked) widget.insertAction(None, deleteAction) def hideOrClose(self): if self.settings['quit']: self.close() else: self.hide() def closeEvent(self, event): self.saveSettings() def hideEvent(self, event): self.releaseMouse() self.saveSettings() def mouseMoveEvent(self, event): if self.hasMouse(): self.releaseMouse() def leaveEvent(self, event): # If we set holdOpen, it means that we've opened a dialog, so we shouldn't grab if not self.hasMouse(): self.grabMouse() def mousePressEvent(self, event): if not self.hasMouse(): self.hideOrClose() def hasMouse(self): return self.geometry().contains(QCursor.pos()) def saveSettings(self): self.settings['splitterState'] = self.listSplitter.saveState() self.settings['width'] = self.width() self.settings['height'] = self.height() with open(self.settingsFile, 'wb') as f: cPickle.dump(self.settings, f) def place(self): desktop = qApp.desktop() screenSize = desktop.availableGeometry(QCursor.pos()) self.move(screenSize.x(), screenSize.y() + screenSize.height() - self.height()) def newClicked(self): form = AddForm() self.holdOpen = True form.exec_() self.checkMouse() self.holdOpen = False if form.accepted: item = MenuItem() item.name = form.name item.command = form.command item.working = form.working item.folder = form.folder item.icon = form.icon item.findIcon() clicked = self.getClicked() if clicked: parent = clicked.item.parent elif self.leftList.mouseOver: if self.currentItem != None: parent = self.currentItem.parent else: parent = None else: parent = self.currentItem item.parent = parent self.menuItems.append(item) self.refresh() def editClicked(self): form = AddForm() clicked = self.getClicked() if clicked == None: return item = clicked.item form.name = item.name form.command = item.command form.working = item.working form.folder = item.folder form.icon = item.icon form.populateFields() self.holdOpen = True form.exec_() self.checkMouse() self.holdOpen = False if form.accepted: item.name = form.name item.command = form.command item.working = form.working item.folder = form.folder item.icon = form.icon item.imported = False item.findIcon() self.refresh() def checkMouse(self): if not self.hasMouse(): self.grabMouse() def deleteClicked(self): clicked = self.getClicked() if clicked == None: return self.delete(clicked.item) self.refresh() # Delete item and all of its children so we don't leave around orphaned items def delete(self, item): for i in self.menuItems: if i.parent == item: i.deleted = True if item in self.menuItems: item.deleted = True item.imported = False if item in self.favorites: self.favorites.remove(item) def addFavoriteClicked(self): newFavorite = copy.copy(self.getClicked().item) newFavorite.parent = None self.favorites.append(newFavorite) self.refresh() def getClicked(self): for i in self.allItems: if i.mouseOver: return i def clearMouseOver(self): for i in self.allItems: i.mouseOver = False def clearListMouseOver(self): self.leftList.mouseOver = False self.rightList.mouseOver = False def refresh(self, save = True): self.leftList.clear() self.rightList.clear() self.allItems = [] sortedLeft = [] sortedRight = [] self.updateFilter() if self.currentItem != None: currParent = self.currentItem.parent for i in self.menuItems: if i.parent == currParent and not i.deleted and i.matchedFilter: sortedLeft.append(i) else: for i in self.favorites: sortedLeft.append(i) for i in self.menuItems: if i.parent == self.currentItem and not i.deleted and i.matchedFilter: sortedRight.append(i) sortedLeft.sort(key = lambda x: x.name) sortedLeft.sort(key = lambda x: not x.folder) sortedRight.sort(key = lambda x: x.name) sortedRight.sort(key = lambda x: not x.folder) for i in sortedLeft: self.leftList.add(self.createItem(i)) for i in sortedRight: self.rightList.add(self.createItem(i)) if save: self.saveMenu() def saveMenu(self): # Save the current menu status with open(self.menuFile, 'wb') as f: cPickle.dump(self.menuItems, f) with open(self.favoritesFile, 'wb') as f: cPickle.dump(self.favorites, f) def createItem(self, item): newItem = ListItem(item, self.clearMouseOver) newItem.clicked.connect(self.itemClicked) self.allItems.append(newItem) return newItem def updateFilter(self): filterValue = str(self.filterBox.text()) for i in self.menuItems: i.checkFilter(filterValue) def itemClicked(self): sender = self.sender() if sender.item.folder: self.setCurrentItem(sender.item) self.refresh(False) else: flags = ['f', 'F', 'u', 'U', 'd', 'D', 'n', 'N', 'i', 'k', 'v', 'm'] command = sender.item.command for i in flags: command = command.replace('%' + i, '') # %c needs a proper value in some cases command = command.replace('%c', '"%s"' % sender.item.name) working = sender.item.working if not os.path.isdir(working): working = None # Need to redirect stdout and stderr so if the process writes something it won't fail with open(os.path.devnull, 'w') as devnull: Popen(command + '&', stdout=devnull, stderr=devnull, shell=True, cwd=working) self.hideOrClose() def backClicked(self): if self.currentItem: self.setCurrentItem(self.currentItem.parent) self.refresh(False) def setCurrentItem(self, item): self.currentItem = item if item != None: self.currentLabel.setText(item.name) if item.parent != None: self.backButton.setText(item.parent.name) else: self.backButton.setText('Favorites') else: self.currentLabel.setText('') self.backButton.setText('Favorites') def settingsClicked(self): form = SettingsForm(self) form.quitCheck.setChecked(self.settings['quit']) theme = self.settings.get('iconTheme') if theme: form.themeCombo.setCurrentIndex(form.themeCombo.findText(theme)) self.holdOpen = True form.exec_() self.checkMouse() self.holdOpen = False if form.accepted: self.settings['quit'] = form.quitCheck.isChecked() def firstRun(self): QMessageBox.information(self, 'First Time?', 'Your menu is currently empty. It is recommended that you import an existing menu file.') self.settingsClicked() def connectToRunning(self): self.socket = QLocalSocket() self.socket.connectToServer('nemuSocket') self.socket.waitForConnected(1000) if self.socket.state() == QLocalSocket.ConnectedState: print 'Server found' if self.socket.waitForReadyRead(3000): line = self.socket.readLine() print line else: print self.socket.errorString() sys.exit() else: print 'No server running' def handleConnection(self): import datetime print "Got connection", datetime.datetime.now() connection = self.server.nextPendingConnection() connection.write('connected') del connection self.setCurrentItem(None) self.filterBox.setText('') self.refresh(False) self.show() print "Showed", datetime.datetime.now() return # Call periodically to keep data resident in memory (hopefully) def keepalive(self): if self.isHidden(): self.refresh(False)
def setupUI(self): self.resize(self.settings['width'], self.settings['height']) self.setWindowFlags(Qt.FramelessWindowHint | Qt.CustomizeWindowHint | Qt.WindowStaysOnTopHint) #self.setWindowFlags(Qt.X11BypassWindowManagerHint) self.setWindowTitle('Nemu') self.setMouseTracking(True) iconPath = os.path.join(os.path.dirname(__file__), 'images') iconPath = os.path.join(iconPath, 'nemu.png') self.setWindowIcon(IconCache()[iconPath]) self.place() self.buttonListLayout = QVBoxLayout(self) self.setMargins(self.buttonListLayout) self.buttonLayout = QHBoxLayout() self.setMargins(self.buttonLayout) # Settings and Filter box self.filterLayout = QHBoxLayout() self.settingsButton = QPushButton() self.settingsButton.setIcon(QIcon(iconPath)) self.settingsButton.setMinimumHeight(35) self.settingsButton.clicked.connect(self.settingsClicked) self.filterLayout.addWidget(self.settingsButton, 0) self.filterLabel = QLabel("Filter") self.filterLayout.addWidget(self.filterLabel) self.filterBox = QLineEdit() self.filterBox.textChanged.connect(self.refresh) self.filterLayout.addWidget(self.filterBox) self.sizeGrip = QSizeGrip(self) self.sizeGrip.setMinimumSize(QSize(25, 25)) self.filterLayout.addWidget(self.sizeGrip, 0, Qt.AlignRight | Qt.AlignTop) self.buttonListLayout.addLayout(self.filterLayout) # Top buttons and labels self.backButton = QPushButton('Favorites') self.backButton.setMinimumHeight(35) self.backButton.clicked.connect(self.backClicked) self.buttonLayout.addWidget(self.backButton, 1) self.currentLabel = QLabel() self.currentLabel.setAlignment(Qt.AlignHCenter | Qt.AlignVCenter) self.buttonLayout.addWidget(self.currentLabel, 1) self.buttonListLayout.addLayout(self.buttonLayout, 0) # Menu item display self.listSplitter = QSplitter() self.buttonListLayout.addWidget(self.listSplitter, 1) self.leftList = ListWidget(self.clearListMouseOver) self.listSplitter.addWidget(self.leftList) self.rightList = ListWidget(self.clearListMouseOver) self.listSplitter.addWidget(self.rightList) # Has to be done after adding widgets to the splitter or the size will get reset again if 'splitterState' in self.settings: self.listSplitter.restoreState(self.settings['splitterState'])
def create_rooms(self): self.listWidget = ListWidget(self.centralwidget, 'Wartezimmer', self) self.listWidget.setGeometry(QtCore.QRect(self.offset_left, 20, 256, 192)) self.listWidget.setObjectName("listWidget") self.label = QtWidgets.QLabel(self.centralwidget) self.label.setGeometry(QtCore.QRect(self.offset_left, 0, 251, 16)) self.label.setObjectName("label") self.waiting_rooms.append(self.listWidget) self.labels_waiting.append(self.label) self.listWidget_2 = ListWidget(self.centralwidget, 'Raum1', self) self.listWidget_2.setGeometry(QtCore.QRect(640, 20, 256, 192)) self.listWidget_2.setObjectName("listWidget_2") self.label_2 = QtWidgets.QLabel(self.centralwidget) self.label_2.setGeometry(QtCore.QRect(640, 0, 51, 16)) self.label_2.setObjectName("label_2") self.rooms.append(self.listWidget_2) self.labels.append(self.label_2) self.listWidget_3 = ListWidget(self.centralwidget, 'Raum2', self) self.listWidget_3.setGeometry(QtCore.QRect(900, 20, 256, 192)) self.listWidget_3.setObjectName("listWidget_3") self.label_3 = QtWidgets.QLabel(self.centralwidget) self.label_3.setGeometry(QtCore.QRect(900, 0, 61, 16)) self.label_3.setObjectName("label_3") self.rooms.append(self.listWidget_3) self.labels.append(self.label_3) self.listWidget_4 = ListWidget(self.centralwidget, 'Raum3', self) self.listWidget_4.setGeometry(QtCore.QRect(1160, 20, 256, 192)) self.listWidget_4.setObjectName("listWidget_3") self.label_4 = QtWidgets.QLabel(self.centralwidget) self.label_4.setGeometry(QtCore.QRect(1160, 0, 61, 16)) self.label_4.setObjectName("label_4") self.rooms.append(self.listWidget_4) self.labels.append(self.label_4) self.listWidget_5 = ListWidget(self.centralwidget, 'Raum4', self) self.listWidget_5.setGeometry(QtCore.QRect(1420, 20, 256, 192)) self.listWidget_5.setObjectName("listWidget_3") self.label_5 = QtWidgets.QLabel(self.centralwidget) self.label_5.setGeometry(QtCore.QRect(1420, 0, 61, 16)) self.label_5.setObjectName("label_5") self.rooms.append(self.listWidget_5) self.labels.append(self.label_5) # New Line self.listWidget_6 = ListWidget(self.centralwidget, 'Wartezimmer2', self) self.listWidget_6.setGeometry(QtCore.QRect(self.offset_left, 250, 256, 192)) self.listWidget_6.setObjectName("listWidget") self.label_6 = QtWidgets.QLabel(self.centralwidget) self.label_6.setGeometry(QtCore.QRect(self.offset_left, 230, 451, 16)) self.label_6.setObjectName("label_6") self.labels_waiting.append(self.label_6) self.waiting_rooms.append(self.listWidget_6) self.listWidget_7 = ListWidget(self.centralwidget, 'Raum5', self) self.listWidget_7.setGeometry(QtCore.QRect(640, 250, 256, 192)) self.listWidget_7.setObjectName("listWidget_2") self.label_7 = QtWidgets.QLabel(self.centralwidget) self.label_7.setGeometry(QtCore.QRect(640, 230, 51, 16)) self.label_7.setObjectName("label_7") self.rooms.append(self.listWidget_7) self.labels.append(self.label_7) self.listWidget_8 = ListWidget(self.centralwidget, 'Raum6', self) self.listWidget_8.setGeometry(QtCore.QRect(900, 250, 256, 192)) self.listWidget_8.setObjectName("listWidget_3") self.label_8 = QtWidgets.QLabel(self.centralwidget) self.label_8.setGeometry(QtCore.QRect(900, 230, 61, 16)) self.label_8.setObjectName("label_8") self.rooms.append(self.listWidget_8) self.labels.append(self.label_8) self.listWidget_9 = ListWidget(self.centralwidget, 'Raum7', self) self.listWidget_9.setGeometry(QtCore.QRect(1160, 250, 256, 192)) self.listWidget_9.setObjectName("listWidget_3") self.label_9 = QtWidgets.QLabel(self.centralwidget) self.label_9.setGeometry(QtCore.QRect(1160, 230, 61, 16)) self.label_9.setObjectName("label_9") self.rooms.append(self.listWidget_9) self.labels.append(self.label_9) self.listWidget_10 = ListWidget(self.centralwidget, 'Raum8', self) self.listWidget_10.setGeometry(QtCore.QRect(1420, 250, 256, 192)) self.listWidget_10.setObjectName("listWidget_3") self.label_10 = QtWidgets.QLabel(self.centralwidget) self.label_10.setGeometry(QtCore.QRect(1420, 230, 61, 16)) self.label_10.setObjectName("label_10") self.rooms.append(self.listWidget_10) self.labels.append(self.label_10) for i in range(self.active_treatment_rooms, len(self.rooms)): self.rooms[i].hide() self.labels[i].hide() self.number_rooms_old = 0 self.number_rooms = self.active_treatment_rooms for i in range(self.active_waiting_rooms, len(self.waiting_rooms)): self.waiting_rooms[i].hide() self.number_waiting_rooms_old = 0 self.number_waiting_rooms = self.active_waiting_rooms
def __init__(self): super().__init__() # Llamada obligatoria al constructor del padre self.layout = QHBoxLayout() # Layout horizontal self.list_widget = ListWidget() self.layout.addWidget(self.list_widget) # Adicion al layout self.setLayout(self.layout) # Fijacion del Layout
class Ui_MainWindow(object): current_path = "C:/Users/Administrator/Desktop/Arztpraxis" max_width = 0 max_height = 0 height_button = 0 width_button = 0 offset_left = 100 active_treatment_rooms = 0 active_waiting_rooms = 0 def addCustomer(self): name, _ = QtWidgets.QInputDialog.getText(None, 'Text Eingabe', 'Patienten Name:', QtWidgets.QLineEdit.Normal, "") print("Added Customer", name) print(datetime.datetime.now().strftime('%H:%M %d.%m.%Y')) self.customerList.append(Customer(self.centralwidget, name, self)) self.customerList[-1].times.append('Betreten:'+datetime.datetime.now().strftime('%H:%M %d.%m.%Y')) self.customerList[-1].setText(name) self.comboBox.addItem(self.customerList[-1].name) customer = QtWidgets.QListWidgetItem(self.customerList[-1].name) self.listWidget.addItem(customer) def deleteCustomer(self): if len(self.customerList) > 0: for index, customer in enumerate(self.customerList): if customer.name == self.comboBox.currentText(): print("Deleting Customer: ", customer.name) print(datetime.datetime.now().strftime('%H:%M %d.%m.%Y')) self.customerList[index].times.append('Verlassen:'+datetime.datetime.now().strftime('%H:%M %d.%m.%Y')) self.comboBox.removeItem(index) with open(self.current_path+'/Zeiten/Data '+ datetime.datetime.now().strftime('%d-%m-%Y')+'/' +str(self.customerList[index].id)+'.txt', 'w') as f: json.dump(self.customerList[index].times, f, separators=(',',':'), indent=2) for room in self.rooms: items = room.findItems(customer.name, QtCore.Qt.MatchExactly) if len(items) > 0: for item in items: row = room.row(item) room.takeItem(row) del self.customerList[index] def updateNames(self, customer_id, old_name): print("hanged Name of Customer with ID: " + str(customer_id)) for index, customer in enumerate(self.customerList): if customer.id == customer_id: self.comboBox.setItemText(index, self.customerList[index].name) def roomChange(self, date, customer_name, room_name): for indx, customer in enumerate(self.customerList): if customer.name == customer_name: self.customerList[indx].times.append('Raumwechsel von ' + customer.act_room + ' zu ' + room_name + ', um: ' + date) customer.act_room = room_name def setupUi(self, MainWindow): MainWindow.setObjectName("Arztpraxis") MainWindow.resize(1920, 1080) MainWindow.setWindowState(QtCore.Qt.WindowMaximized) file_path_data = self.current_path + "/Zeiten/Data " + datetime.datetime.now().strftime('%d-%m-%Y') if not os.path.exists(file_path_data): print('Creating new Dir for today') os.makedirs(file_path_data) with open(self.current_path+'/settings.txt', 'r') as f: for nr, line in zip(range(2), f): if nr == 0: self.active_treatment_rooms = int(line) elif nr == 1: self.active_waiting_rooms = int(line) print('Loaded settings: ') print(self.active_treatment_rooms, self.active_waiting_rooms) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.customerList = [] self.rooms = [] self.waiting_rooms = [] self.labels = [] self.labels_waiting = [] self.max_width = MainWindow.frameGeometry().width() self.max_height = MainWindow.frameGeometry().height() self.height_button = 41 self.width_button = 121 self.create_rooms() self.number_rooms = 0 self.number_rooms_old = self.active_treatment_rooms self.number_waiting_rooms = 0 self.number_waiting_rooms_old = self.active_waiting_rooms self.ui_logic() self.ui_setup(MainWindow) def menu_bar(self): self.settings = self.menubar.addMenu('Settings') # Treatment Rooms self.rooms_number = QtWidgets.QAction('Behandlungszimmer', self.centralwidget) number = self.rooms_number.triggered.connect(lambda: self.text_input('Anzahl an Behandlungszimmer: ')) self.settings.addAction(self.rooms_number) # Waiting Rooms self.waiting_rooms_number = QtWidgets.QAction('Wartezimmer', self.centralwidget) number = self.waiting_rooms_number.triggered.connect(lambda: self.text_input('Anzahl an Wartezimmer: ')) self.settings.addAction(self.waiting_rooms_number) # Add Save Button for Number of Treatment and Waiting Rooms self.save = self.menubar.addMenu('Save') self.save_action = QtWidgets.QAction('Behandlungszimmer', self.centralwidget) self.save_action.triggered.connect(lambda: self.save_settings()) self.save.addAction(self.save_action) def save_settings(self): print('Trigger save settings') self.active_treatment_rooms = sum([room.isVisible() for room in self.rooms]) self.active_waiting_rooms = sum([waiting_room.isVisible() for waiting_room in self.waiting_rooms]) print(self.active_treatment_rooms, self.active_waiting_rooms) with open(self.current_path+'/settings.txt', 'w') as f: f.write(str(self.active_treatment_rooms)) f.write("\n") f.write(str(self.active_waiting_rooms)) def text_input(self, question): if 'Wartezimmer' in question: input_text, _ = QtWidgets.QInputDialog.getText(self.centralwidget, 'Zahlen Eingabe (1-2)', question, QtWidgets.QLineEdit.Normal) if input_text != "" and input_text.isdigit(): self.number_waiting_rooms = int(input_text) self.reshape_waiting_rooms() elif 'Behandlung' in question: input_text, _ = QtWidgets.QInputDialog.getText(self.centralwidget, 'Zahlen Eingabe (1-10)', question, QtWidgets.QLineEdit.Normal) if input_text != "" and input_text.isdigit(): self.number_rooms = int(input_text) self.reshape_rooms() def ui_setup(self, MainWindow): MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 962, 21)) self.menubar.setObjectName("menubar") MainWindow.setMenuBar(self.menubar) self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) self.menu_bar() def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "Arztpraxis")) self.label.setText(_translate("MainWindow", "Wartezimmer")) self.label_2.setText(_translate("MainWindow", "Raum 1")) self.label_3.setText(_translate("MainWindow", "Raum 2")) self.label_4.setText(_translate("MainWindow", "Raum 3")) self.label_5.setText(_translate("MainWindow", "Raum 4")) self.label_6.setText(_translate("MainWindow", "Wartezimmer 2")) self.label_7.setText(_translate("MainWindow", "Raum 5")) self.label_8.setText(_translate("MainWindow", "Raum 6")) self.label_9.setText(_translate("MainWindow", "Raum 7")) self.label_10.setText(_translate("MainWindow", "Raum 8")) self.pushButton.setText(_translate("MainWindow", "Patient erstellen")) self.pushButton_2.setText(_translate("MainWindow", "Patient löschen")) def create_rooms(self): self.listWidget = ListWidget(self.centralwidget, 'Wartezimmer', self) self.listWidget.setGeometry(QtCore.QRect(self.offset_left, 20, 256, 192)) self.listWidget.setObjectName("listWidget") self.label = QtWidgets.QLabel(self.centralwidget) self.label.setGeometry(QtCore.QRect(self.offset_left, 0, 251, 16)) self.label.setObjectName("label") self.waiting_rooms.append(self.listWidget) self.labels_waiting.append(self.label) self.listWidget_2 = ListWidget(self.centralwidget, 'Raum1', self) self.listWidget_2.setGeometry(QtCore.QRect(640, 20, 256, 192)) self.listWidget_2.setObjectName("listWidget_2") self.label_2 = QtWidgets.QLabel(self.centralwidget) self.label_2.setGeometry(QtCore.QRect(640, 0, 51, 16)) self.label_2.setObjectName("label_2") self.rooms.append(self.listWidget_2) self.labels.append(self.label_2) self.listWidget_3 = ListWidget(self.centralwidget, 'Raum2', self) self.listWidget_3.setGeometry(QtCore.QRect(900, 20, 256, 192)) self.listWidget_3.setObjectName("listWidget_3") self.label_3 = QtWidgets.QLabel(self.centralwidget) self.label_3.setGeometry(QtCore.QRect(900, 0, 61, 16)) self.label_3.setObjectName("label_3") self.rooms.append(self.listWidget_3) self.labels.append(self.label_3) self.listWidget_4 = ListWidget(self.centralwidget, 'Raum3', self) self.listWidget_4.setGeometry(QtCore.QRect(1160, 20, 256, 192)) self.listWidget_4.setObjectName("listWidget_3") self.label_4 = QtWidgets.QLabel(self.centralwidget) self.label_4.setGeometry(QtCore.QRect(1160, 0, 61, 16)) self.label_4.setObjectName("label_4") self.rooms.append(self.listWidget_4) self.labels.append(self.label_4) self.listWidget_5 = ListWidget(self.centralwidget, 'Raum4', self) self.listWidget_5.setGeometry(QtCore.QRect(1420, 20, 256, 192)) self.listWidget_5.setObjectName("listWidget_3") self.label_5 = QtWidgets.QLabel(self.centralwidget) self.label_5.setGeometry(QtCore.QRect(1420, 0, 61, 16)) self.label_5.setObjectName("label_5") self.rooms.append(self.listWidget_5) self.labels.append(self.label_5) # New Line self.listWidget_6 = ListWidget(self.centralwidget, 'Wartezimmer2', self) self.listWidget_6.setGeometry(QtCore.QRect(self.offset_left, 250, 256, 192)) self.listWidget_6.setObjectName("listWidget") self.label_6 = QtWidgets.QLabel(self.centralwidget) self.label_6.setGeometry(QtCore.QRect(self.offset_left, 230, 451, 16)) self.label_6.setObjectName("label_6") self.labels_waiting.append(self.label_6) self.waiting_rooms.append(self.listWidget_6) self.listWidget_7 = ListWidget(self.centralwidget, 'Raum5', self) self.listWidget_7.setGeometry(QtCore.QRect(640, 250, 256, 192)) self.listWidget_7.setObjectName("listWidget_2") self.label_7 = QtWidgets.QLabel(self.centralwidget) self.label_7.setGeometry(QtCore.QRect(640, 230, 51, 16)) self.label_7.setObjectName("label_7") self.rooms.append(self.listWidget_7) self.labels.append(self.label_7) self.listWidget_8 = ListWidget(self.centralwidget, 'Raum6', self) self.listWidget_8.setGeometry(QtCore.QRect(900, 250, 256, 192)) self.listWidget_8.setObjectName("listWidget_3") self.label_8 = QtWidgets.QLabel(self.centralwidget) self.label_8.setGeometry(QtCore.QRect(900, 230, 61, 16)) self.label_8.setObjectName("label_8") self.rooms.append(self.listWidget_8) self.labels.append(self.label_8) self.listWidget_9 = ListWidget(self.centralwidget, 'Raum7', self) self.listWidget_9.setGeometry(QtCore.QRect(1160, 250, 256, 192)) self.listWidget_9.setObjectName("listWidget_3") self.label_9 = QtWidgets.QLabel(self.centralwidget) self.label_9.setGeometry(QtCore.QRect(1160, 230, 61, 16)) self.label_9.setObjectName("label_9") self.rooms.append(self.listWidget_9) self.labels.append(self.label_9) self.listWidget_10 = ListWidget(self.centralwidget, 'Raum8', self) self.listWidget_10.setGeometry(QtCore.QRect(1420, 250, 256, 192)) self.listWidget_10.setObjectName("listWidget_3") self.label_10 = QtWidgets.QLabel(self.centralwidget) self.label_10.setGeometry(QtCore.QRect(1420, 230, 61, 16)) self.label_10.setObjectName("label_10") self.rooms.append(self.listWidget_10) self.labels.append(self.label_10) for i in range(self.active_treatment_rooms, len(self.rooms)): self.rooms[i].hide() self.labels[i].hide() self.number_rooms_old = 0 self.number_rooms = self.active_treatment_rooms for i in range(self.active_waiting_rooms, len(self.waiting_rooms)): self.waiting_rooms[i].hide() self.number_waiting_rooms_old = 0 self.number_waiting_rooms = self.active_waiting_rooms def reshape_rooms(self): if self.number_rooms > len(self.rooms): self.number_rooms = len(self.rooms) print('Reshape Treatment Rooms from: ', self.number_rooms_old, ' to: ', self.number_rooms) if self.number_rooms_old > self.number_rooms: for indx in range(self.number_rooms, self.number_rooms_old): self.rooms[indx].hide() self.labels[indx].hide() self.number_rooms_old = self.number_rooms elif self.number_rooms_old < self.number_rooms: for indx in range(self.number_rooms_old, self.number_rooms): self.rooms[indx].show() self.labels[indx].show() self.number_rooms_old = self.number_rooms def reshape_waiting_rooms(self): if self.number_waiting_rooms > len(self.waiting_rooms): self.number_waiting_rooms = len(self.waiting_rooms) print('Reshape Treatment Rooms from: ', self.number_waiting_rooms_old, ' to: ', self.number_waiting_rooms) if self.number_waiting_rooms_old > self.number_waiting_rooms: for indx in range(self.number_waiting_rooms, self.number_waiting_rooms_old): self.waiting_rooms[indx].hide() self.labels_waiting[indx].hide() self.number_waiting_rooms_old = self.number_waiting_rooms elif self.number_waiting_rooms_old < self.number_waiting_rooms: for indx in range(self.number_waiting_rooms_old, self.number_waiting_rooms): self.waiting_rooms[indx].show() self.labels_waiting[indx].show() self.number_waiting_rooms_old = self.number_waiting_rooms def ui_logic(self): self.pushButton = QtWidgets.QPushButton(self.centralwidget) print(self.max_height) print(self.max_width) self.pushButton.setGeometry(QtCore.QRect(self.width_button, self.max_height - 5 * self.height_button, self.width_button, self.height_button)) self.pushButton.setObjectName("pushButton") self.pushButton.clicked.connect(self.addCustomer) self.comboBox = QtWidgets.QComboBox(self.centralwidget) self.comboBox.setGeometry(QtCore.QRect(self.max_width - 4 * self.width_button, self.max_height - 6 * self.height_button, self.width_button, self.height_button)) self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget) self.pushButton_2.setGeometry(QtCore.QRect(self.max_width - 4 * self.width_button, self.max_height - 5 * self.height_button, self.width_button, self.height_button)) self.pushButton_2.setObjectName("pushButton_2") self.pushButton_2.clicked.connect(self.deleteCustomer)