def home(self): """ Home page of the App. """ # Create and display calendar object. calendar = QCalendarWidget(self) calendar.setGridVisible(True) calendar.move(20, 50) calendar.resize(320, 200) calendar.setMinimumDate(QtCore.QDate(1995, 6, 16)) calendar.setMaximumDate(QtCore.QDate.currentDate()) calendar.clicked[QtCore.QDate].connect(self.get_apod_date) # Get date selected by calendar object and change date to desired # format. (YYMMDD) date = calendar.selectedDate() a_date = [int(str(date.year())[2:]), date.month(), date.day()] self.astro_date = ''.join(list(map(str, a_date))) # Create "See Picture" button. Connect it to get_picture function. see_button = QPushButton("See Picture", self) see_button.move(20, 280) see_button.clicked.connect(self.get_picture) # Display all objects in the window. self.show()
def __init__(self): super(window, self).__init__() self.setGeometry(50, 50, 800, 500) self.setWindowTitle('pyqt5 Tut') # self.setWindowIcon(QIcon('pic.png')) extractAction = QAction('&Get to the choppah', self) extractAction.setShortcut('Ctrl+Q') extractAction.setStatusTip('leave the app') extractAction.triggered.connect(self.close_application) self.statusBar() mainMenu = self.menuBar() fileMenu = mainMenu.addMenu('&File') fileMenu.addAction(extractAction) extractAction = QAction(QIcon('pic.png'), 'flee the scene', self) extractAction.triggered.connect(self.close_application) self.toolBar = self.addToolBar('extraction') self.toolBar.addAction(extractAction) fontChoice = QAction('Font', self) fontChoice.triggered.connect(self.font_choice) # self.toolBar = self.addToolBar('Font') self.toolBar.addAction(fontChoice) cal = QCalendarWidget(self) cal.move(500, 200) cal.resize(200, 200) self.home()
def home(self): btn = QPushButton('quit', self) btn.clicked.connect(self.close_application) # btn.resize(btn.sizeHint()) # auto size for btn btn.resize(btn.minimumSizeHint()) btn.move(0, 100) extractAction = QAction(QIcon('icon-smoker.jpg'), 'Flee the scene', self) extractAction.triggered.connect(self.close_application) self.toolBar = self.addToolBar('Extraction') self.toolBar.addAction(extractAction) bsAction = QAction(QIcon('icon-me.jpg'), 'bullshit time', self) bsAction.triggered.connect(self.bullshit) self.toolBar.addAction(bsAction) fontChoice = QAction('font', self) fontChoice.triggered.connect(self.font_choice) self.toolBar.addAction(fontChoice) color = QColor(0, 0, 0) fontColor = QAction('Font bg Color', self) fontColor.triggered.connect(self.color_picker) self.toolBar.addAction(fontColor) cal = QCalendarWidget(self) cal.move(500, 200) cal.resize(200, 200) checkBox = QCheckBox('window size', self) checkBox.move(300, 25) # checkBox.toggle() checkBox.stateChanged.connect(self.enlargeWindow) self.progress = QProgressBar(self) self.progress.setGeometry(200, 80, 250, 20) self.btn = QPushButton('download', self) self.btn.move(200, 120) self.btn.clicked.connect(self.download) # print(self.style().objectName()) self.styleChoice = QLabel('Windows', self) comboBox = QComboBox(self) # comboBox.addItem('motif') # comboBox.addItem('Windows') # comboBox.addItem('cde') # comboBox.addItem('Plastique') # comboBox.addItem('Cleanlooks') # comboBox.addItem('windowsvista') comboBox.addItems(QStyleFactory.keys()) comboBox.move(25, 250) self.styleChoice.move(50, 150) comboBox.activated[str].connect(self.style_choice) self.show()
def Calendar(self, x, y, h, w): cal = QCalendarWidget(self) cal.setMinimumDate(QDate(1988, 1, 1)) cal.setMaximumDate(QDate(2088, 1, 1)) cal.setGridVisible(True) cal.move(x, y) cal.resize(w, h) return cal
def __init__(self): #Window structure set up super(Mainwindow, self).__init__() self.setWindowTitle("My GUI ") self.setGeometry(50, 50, 500, 500) self.setWindowTitle('First GUI with PyQt 5') #Menu Creation extractAction = QAction('&Quit', self) extractAction.setShortcut('Ctrl+Q') extractAction.setStatusTip('Leave the App') #Image set up for the menu items extractAction = QAction(QIcon('Quit.jpg'), 'Quit', self) extractAction.triggered.connect(self.closeApplication) #Main menu creation mainManu = self.menuBar() fileMenu = mainManu.addMenu('&File') fileMenu.addAction(extractAction) #OPen file tab openFile = QAction('&OpenFile', self) openFile.setShortcut('CTRL+O') openFile.setStatusTip('OpenFile') openFile.triggered.connect(self.openFile) fileMenu.addAction(openFile) #Save file saveFile = QAction('&SaveFile', self) saveFile.setShortcut('CTRL+S') saveFile.setStatusTip('Save File') saveFile.triggered.connect(self.fileSave) fileMenu.addAction(saveFile) self.statusBar() #Add Toolbar section self.toolBar = self.addToolBar('Extraction') self.toolBar.addAction(extractAction) #Add Text editior openEditor = QAction('&Editor', self) openEditor.setShortcut('Ctrl+E') openEditor.setStatusTip('Open Editor') openEditor.triggered.connect(self.editor) self.toolBar.addAction(openEditor) #Addition of Font list fontChoice = QAction('Font', self) fontChoice.triggered.connect(self.font_Choice) fontChoice.setStatusTip('Select Colors') self.toolBar.addAction(fontChoice) cal = QCalendarWidget(self) cal.move(500, 200) cal.resize(200, 200) self.HomeItems()
class App(QMainWindow): def __init__(self): super().__init__() self.title = 'PyQt5 School_admin_app' self.left = 10 self.top = 100 self.width = config1.width self.height = config1.height self.initUI() def initUI(self): self.setWindowTitle(self.title) self.setGeometry(self.left, self.top, self.width, self.height) self.menubar() self.calender() self.root_buttons() self.statusBar().showMessage('School Admin Tool') self.show() def root_buttons(self): self.attendace_btn = QPushButton('Attendance', self) self.attendace_btn.clicked.connect(self.class_btn) self.attendace_btn.move(50, 30) self.performance_btn = QPushButton('Performance', self) self.performance_btn.clicked.connect(self.class_btn) self.performance_btn.move(150, 30) self.bonafide_btn = QPushButton('Bonafide', self) self.bonafide_btn.clicked.connect(self.class_btn) self.bonafide_btn.move(250, 30) def class_btn(self): pass def calender(self): self.cal = QCalendarWidget(self) self.cal.resize(200, 150) self.cal.setGridVisible(True) self.cal.move(self.width - 210, 25) def menubar(self): exitAct = QAction(QIcon('exit.png'), '&Exit', self) exitAct.setShortcut('Ctrl+Q') exitAct.setStatusTip('Exit application') exitAct.triggered.connect(qApp.quit) def addbox_text(self, ): print("called: ", self.clicked_class.text()) self.textGenerated = QLineEdit(self) self.textGenerated.move(5, 106) self.textGenerated.resize(self.width - 10, 80) self.textGenerated.setVisible(False) @pyqtSlot() def on_click(self): textboxValue = self.textbox.text() print("text: ", textboxValue)
def home(self): btn = QPushButton('Quit', self) btn.clicked.connect(self.close) btn.resize(btn.minimumSizeHint()) btn.move(10,100) exitAction = QAction(QIcon('pyicon.png'), 'Exit the Application', self) exitAction.triggered.connect(self.close) tool = self.addToolBar('Exit') tool.addAction(exitAction) font = QAction(QIcon('pyicon.png'), 'Choose Font', self) font.triggered.connect(self.choosefont) tool.addAction(font) color = QColor(0, 0, 0) fontcolor = QAction('Font BG Color', self) fontcolor.triggered.connect(self.colorpicker) tool.addAction(fontcolor) checkBox = QCheckBox('Enlarge Window',self) checkBox.move(200, 25) ## checkBox.toggle() checkBox.stateChanged.connect(self.enlargewindow) self.pbar = QProgressBar(self) self.pbar.setGeometry(200, 80, 250, 20) dbtn = QPushButton('download', self) dbtn.move(200, 120) dbtn.clicked.connect(self.download) self.stylelabel = QLabel('GUI Style', self) dropdown = QComboBox(self) dropdown.addItem('WindowsVista') dropdown.addItem('Windows') dropdown.addItem('Fusion') dropdown.addItem('WindowsXP') dropdown.move(50,200) self.stylelabel.move(55,175) dropdown.activated[str].connect(self.style) cal = QCalendarWidget(self) cal.move(500, 200) cal.resize(200,200) self.show()
def __init__(self): super(window, self).__init__() self.setGeometry(50, 50, 800, 500) self.setWindowTitle('pyqt5 Tut') self.setWindowIcon(QIcon('Jellyfish.jpg')) self._console = QTextBrowser(self) extractAction = QAction('Quit application', self) extractAction.setShortcut('Ctrl+Q') extractAction.setStatusTip('leave the app') extractAction.triggered.connect(self.close_application) openEditor = QAction('&Editor', self) openEditor.setShortcut('Ctrl+E') openEditor.setStatusTip('Open Editor') openEditor.triggered.connect(self.editor) openFile = QAction('&Open File', self) openFile.setShortcut('Ctrl+O') openFile.setStatusTip('Open File') openFile.triggered.connect(self.file_open) saveFile = QAction('&Save File', self) saveFile.setShortcut('Ctrl+S') saveFile.setStatusTip('Save File') saveFile.triggered.connect(self.file_save) self.statusBar() mainMenu = self.menuBar() fileMenu = mainMenu.addMenu('&File') fileMenu.addAction(extractAction) fileMenu.addAction(openFile) fileMenu.addAction(saveFile) # create the layout editorMenu = mainMenu.addMenu('&Editor') editorMenu.addAction(openEditor) extractAction = QAction(QIcon('Jellyfish.jpg'), 'flee the scene', self) extractAction.triggered.connect(self.close_application) self.toolBar = self.addToolBar('extraction') self.toolBar.addAction(extractAction) fontChoice = QAction('Font', self) fontChoice.triggered.connect(self.font_choice) # self.toolBar = self.addToolBar('Font') self.toolBar.addAction(fontChoice) cal = QCalendarWidget(self) cal.move(500, 200) cal.resize(200, 200) self.home()
def home(self): btn = QPushButton('Quit', self) btn.clicked.connect(self.close_application) btn.resize(btn.minimumSizeHint()) btn.move(0, 100) extractAction = QAction(QIcon('todachoppa.png'), 'Flee the Scene', self) extractAction.triggered.connect(self.close_application) self.toolBar = self.addToolBar("Extraction") self.toolBar.addAction(extractAction) fontChoice = QAction('Font', self) fontChoice.triggered.connect(self.font_choice) #self.toolBar = self.addToolBar("Font") self.toolBar.addAction(fontChoice) color = QColor(0, 0, 0) fontColor = QAction('Font bg Color', self) fontColor.triggered.connect(self.color_picker) self.toolBar.addAction(fontColor) checkBox = QCheckBox('Enlarge Window', self) checkBox.move(200, 25) checkBox.stateChanged.connect(self.enlarge_window) self.progress = QProgressBar(self) self.progress.setGeometry(200, 80, 250, 20) self.btn = QPushButton("Download", self) self.btn.move(200, 120) self.btn.clicked.connect(self.download) print(self.style().objectName()) self.styleChoice = QLabel("Windows Vista", self) comboBox = QComboBox(self) comboBox.addItem("motif") comboBox.addItem("Windows") comboBox.addItem("cde") comboBox.addItem("Plastique") comboBox.addItem("Cleanlooks") comboBox.addItem("windowsvista") comboBox.move(50, 250) self.styleChoice.move(50, 150) comboBox.activated[str].connect(self.style_choice) cal = QCalendarWidget(self) cal.move(500, 200) cal.resize(350, 350) self.show()
def __init__(self): super(Window, self).__init__() self.setGeometry(50, 50, 500, 400) self.setWindowTitle('pyqt5 Tuts') self.setWindowIcon(QIcon('python-logo.png')) extractAction = QAction("&GET TO THE CHOPPAH!!!", self) extractAction.setShortcut("Ctrl+Q") extractAction.setStatusTip('Leave The App') extractAction.triggered.connect(self.close_application) self.statusBar() mainMenu = self.menuBar() fileMenu = mainMenu.addMenu('&File') fileMenu.addAction(extractAction) extractAction = QAction(QIcon('todachoppa.png'), 'Flee the Scene', self) extractAction.triggered.connect(self.close_application) self.toolBar = self.addToolBar("Extraction") self.toolBar.addAction(extractAction) fontChoice = QAction('Font', self) fontChoice.triggered.connect(self.font_choice) #self.toolBar = self.addToolBar("Font") self.toolBar.addAction(fontChoice) fontColor = QAction('Font bg Color', self) fontColor.triggered.connect(self.color_picker) self.toolBar.addAction(fontColor) cal = QCalendarWidget(self) cal.move(200, 150) cal.resize(200, 200) openEditor = QAction('&Editor', self) openEditor.setShortcut('Ctrl+E') openEditor.setStatusTip('Open Editor') openEditor.triggered.connect(self.editor) editorMenu = mainMenu.addMenu('&Editor') editorMenu.addAction(openEditor) openFile = QAction("&Open File", self) openFile.setShortcut("Ctrl+O") openFile.setStatusTip('Open File') openFile.triggered.connect(self.file_open) fileMenu.addAction(openFile) self.home()
class Cal(QMainWindow): def __init__(self, parent=None): super(Cal, self).__init__(parent) self.setWindowTitle("Choose Section Date") self.resize(310, 210) self.move(750, 250) self.Cale = QCalendarWidget(self) self.Cale.setVerticalHeaderFormat(self.Cale.NoVerticalHeader) self.Cale.move(5, 5) self.Cale.resize(300, 200) self.Cale.clicked()
def home(self): btn = QPushButton("Quit", self) btn.clicked.connect(self.close_application) btn.resize(btn.minimumSizeHint()) btn.move(10, 70) extract_action = QAction(QIcon("exit.png"), 'Exit the Application', self) extract_action.triggered.connect(self.close_application) self.tool_bar = self.addToolBar("Extraction") self.tool_bar.addAction(extract_action) font_choice_action = QAction(QIcon("font.png"), 'Choice A Font', self) font_choice_action.triggered.connect(self.font_choice) self.tool_bar.addAction(font_choice_action) color_choice_action = QAction(QIcon("baseball.png"), 'Change The Background Color a font', self) color_choice_action.triggered.connect(self.color_choice) self.tool_bar.addAction(color_choice_action) check_box = QCheckBox('Enlarge Window', self) check_box.stateChanged.connect(self.enlarge_window) check_box.move(10, 100) check_box.toggle() self.progress = QProgressBar(self) self.progress.setGeometry(200, 70, 250, 20) self.btn = QPushButton("Downaload", self) self.btn.move(200, 100) self.btn.clicked.connect(self.download) self.lbl_style_choice = QLabel("Windows Vista", self) combo_box = QComboBox(self) combo_box.addItem("Fusion") combo_box.addItem("Windows") combo_box.addItem("Windowsvista") combo_box.move(10, 180) self.lbl_style_choice.move(10, 150) combo_box.activated[str].connect(self.style_choice) cal = QCalendarWidget(self) cal.move(200, 200) cal.resize(320, 200) self.show()
class CalendarDialog(QDialog): def __init__(self, parent): super().__init__(parent) self.cal = QCalendarWidget(self) self.cal.clicked[QDate].connect(self.showDate) self.resize(300, 300) self.cal.resize(300, 300) vbox = QVBoxLayout(self) vbox.addWidget(self.cal) self.lbl = QLabel(self) date = self.cal.selectedDate() vbox.addWidget(self.lbl) def showDate(self, date): self.lbl.setText(date.toString())
def __init__(self): super(window, self).__init__() self.setGeometry(50, 50, 500, 500) self.setWindowTitle('pyqt5 Tut') self.setWindowIcon(QIcon('pic.png')) extractAction = QAction('&Go to Home', self) extractAction.setShortcut('Ctrl+Q') extractAction.setStatusTip('leave the app') extractAction.triggered.connect(self.close_application) openEditor = QAction('&Editor', self) openEditor.setShortcut('Ctrl+E') openEditor.setStatusTip('Open Editor') openEditor.triggered.connect(self.editor) openFile = QAction('&Open File', self) openFile.setShortcut('Ctrl+O') openFile.setStatusTip('Open File') openFile.triggered.connect(self.file_open) saveFile = QAction('&Save File', self) saveFile.setShortcut('Ctrl+S') saveFile.setStatusTip('Save File') saveFile.triggered.connect(self.file_save) self.statusBar() mainMenu = self.menuBar() fileMenu = mainMenu.addMenu('&File') fileMenu.addAction(extractAction) fileMenu.addAction(openFile) fileMenu.addAction(saveFile) editorMenu = mainMenu.addMenu('&Editor') editorMenu.addAction(openEditor) extractAction = QAction(QIcon('pic.png'), 'flee the scene', self) extractAction.triggered.connect(self.close_application) self.toolBar = self.addToolBar('extraction') self.toolBar.addAction(extractAction) cal = QCalendarWidget(self) cal.move(500, 200) cal.resize(200, 200) self.home()
def __init__(self): super().__init__() self.setGeometry(100, 100, 800, 500) self.setWindowTitle("My Programmes") self.setWindowIcon(QIcon('Icon.png')) #Main Menu #This is Main Menu in the Appliacation action = QAction('&Exit',self) action.setShortcut('Ctrl+Q') action.setStatusTip("Exit Application") action.triggered.connect(self.close_application) action2 = QAction('&Edit',self) action2.setShortcut('Ctrl+E') action2.setStatusTip("Edit Operation") action2.triggered.connect(self.editor) #SubMenu #THis is used for Adding subMenu in Menu impt = QMenu('Import',self) impt1 = QAction('import form phone',self) impt2 = QAction('import form hard-drive',self) impt.addAction(impt1) impt.addAction(impt2) Help = QAction('Help',self) Help.setShortcut('Ctrl+H') Help.setStatusTip('Helper Class') Help.triggered.connect(self.helper) self.statusBar() #main Menu Design is Done #Main Menu is applied form here mainMenu = self.menuBar() file = mainMenu.addMenu('&File') file.addAction(action) file.addAction(action2) #Adding SubMenu into Main Menu file.addMenu(impt) # submenu = file.addMenu('Import',self) #Creating New Menu file1 = mainMenu.addMenu('&Help') file1.addAction(Help) #ToolBar Here #content for the ToolBar Here action3 = QAction(QIcon("Icon.png"),'This is Gona End',self) action3.triggered.connect(self.close_application) #Font Picker #Start #A Declaration of the Font by this chicking Action take Place fontchoice = QAction('Fonts',self) fontchoice.triggered.connect(self.font_choice) #ToolBar In the Application self.toolbar = self.addToolBar('Exxit') self.toolbar.addAction(action3) #Added to the ToolBar But YOu Can add where ever u want self.toolbar.addAction(fontchoice) #Color Picker #set a deafult Color color = QColor(0, 0, 0) #Declaration of Color Picker fontcolor = QAction("Font Color",self) fontcolor.triggered.connect(self.color_picker) #Added to ToolBar is not Manditary self.toolbar.addAction(fontcolor) #Calendar Widgets cal = QCalendarWidget(self) #Calendar Position in Gui cal.move(250,230) #Display OF the Calendar Size cal.resize(200,200) #Editor For Writting the Stuff #Declaration Of the Editor # openEditor = QAction("Editor",self) # openEditor.setShortcut("Ctrl+E") # openEditor.setStatusTip("Editing") # openEditor.triggered.connect(self.editor) # #Adding into the Main Menu # edit = mainMenu.addMenu("Edit") # edit.addAction(openEditor) #Open A Fie in Application #Declaration of the MEnu openf = QAction('&Open',self) openf.setShortcut('Ctrl+O') openf.setStatusTip("Open File") openf.triggered.connect(self.openfile) #Added to the MenuBar file.addAction(openf) saveFile = QAction('&Save',self) saveFile.setShortcut('Ctrl+S') saveFile.setStatusTip("Save File") saveFile.triggered.connect(self.saveFi) file.addAction(saveFile) self.initUi()
class App(QWidget): def __init__(self): super().__init__() self.title = 'CSA Program Chapter Tracker' self.left = 50 self.top = 75 self.width = 1350 self.height = 700 self.init_UI() def init_UI(self): self.setWindowTitle(self.title) self.setGeometry(self.left, self.top, self.width, self.height) self.create_student_table() self.create_record_table() self.recordTableWidget.setEditTriggers( QAbstractItemView.NoEditTriggers) self.create_calendar() # l is label self.lname = QLabel("Name", self) self.lnumber = QLabel("Student ID", self) self.lgrade = QLabel("Grade", self) self.lhours = QLabel("Hours", self) self.lcsa = QLabel("CSA", self) self.lstart = QLabel(self.my_calendar.selectedDate().toString(), self) self.lend = QLabel(self.my_calendar.selectedDate().toString(), self) self.lname.move(102.5, 540) self.lnumber.move(252.5, 540) self.lgrade.move(425, 540) self.lhours.move(562.5, 540) self.lcsa.move(710, 540) self.lstart.move(1025, 350) self.lend.move(1180, 350) self.lstart.setFrameStyle(QFrame.Panel | QFrame.Raised) self.lend.setFrameStyle(QFrame.Panel | QFrame.Raised) self.lstart.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) self.lstart.setAlignment(Qt.AlignCenter) self.lend.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) self.lend.setAlignment(Qt.AlignCenter) self.lstart.resize(self.lstart.sizeHint().width() + 6, self.lstart.sizeHint().height() + 3) self.lend.resize(self.lend.sizeHint().width() + 6, self.lend.sizeHint().height() + 3) # tb is textbox self.tbname = QLineEdit(self) self.tbnumber = QLineEdit(self) self.tbhours = QLineEdit(self) # b is combobox self.bgrade = QComboBox(self) self.bcsa = QComboBox(self) self.btimespan = QComboBox(self) self.bgrade.addItem("9th") self.bgrade.addItem("10th") self.bgrade.addItem("11th") self.bgrade.addItem("12th") self.bcsa.addItem("N/A") self.bcsa.addItem("CSA Community") self.bcsa.addItem("CSA Service") self.bcsa.addItem("CSA Achievement") self.btimespan.addItem("Weeks") self.btimespan.addItem("Months") self.btimespan.addItem("Custom") self.bgrade.move(368, 570) self.bcsa.move(652.5, 570) self.btimespan.move(815, 105) self.tbname.move(50, 570) self.tbnumber.move(200, 570) self.tbhours.move(510, 570) self.tbname.resize(140, 25) self.tbnumber.resize(165, 25) self.tbhours.resize(140, 25) self.bgrade.resize(140, 25) self.bcsa.resize(155, 25) self.bgrade.currentText() self.add_button = QPushButton('Add', self) self.add_button.setToolTip('Add student to database with given data') self.add_button.move(810, 567.5) self.add_button.clicked.connect(self.add_student) self.delete_button = QPushButton('Delete', self) self.delete_button.setToolTip('Delete selected rows from database') self.delete_button.move(810, 245) self.delete_button.clicked.connect(self.remove_students) self.print_button = QPushButton('Compile Data', self) self.print_button.setToolTip( 'Compile the current student data as a pdf') self.print_button.move(810, 65) self.print_button.resize(self.print_button.sizeHint()) self.print_button.clicked.connect(self.compile_pdf) self.generate_button = QPushButton('Generate Student', self) self.generate_button.setToolTip('Generate a random student') self.generate_button.move(810, 605) self.generate_button.resize(self.generate_button.sizeHint()) self.generate_button.clicked.connect(self.generate_students) self.start_date_button = QPushButton('Set Start', self) self.start_date_button.setToolTip( 'Set the start date for the data to compile at') self.start_date_button.move(1030, 315) self.start_date_button.resize(self.start_date_button.sizeHint()) self.start_date_button.clicked.connect(self.set_start_date) self.end_date_button = QPushButton('Set End', self) self.end_date_button.setToolTip( 'Set the end date for the data to compile to') self.end_date_button.move(1185, 315) self.end_date_button.resize(self.end_date_button.sizeHint()) self.end_date_button.clicked.connect(self.set_end_date) self.btimespan.resize(self.print_button.sizeHint()) self.layout = QVBoxLayout() self.layout.setContentsMargins(50, 70, 550, 200) self.layout.addWidget(self.recordTableWidget) self.layout.addWidget(self.studentTableWidget) self.layout.setSpacing(29) self.layout.setStretch(0, 3) self.layout.setStretch(1, 5) self.setLayout(self.layout) self.edit = True self.show() def create_student_table(self): self.studentTableWidget = QTableWidget() row_count = c.execute("SELECT COUNT(*) FROM studentdata").fetchone()[0] self.studentTableWidget.setRowCount(row_count) self.studentTableWidget.setColumnCount(5) self.studentTableWidget.setShowGrid(True) self.studentTableWidget.move(0, 0) self.studentTableWidget.setHorizontalHeaderLabels( ['Name', 'Student ID', 'Grade Level', 'Hours', 'CSA']) self.header = self.studentTableWidget.horizontalHeader() self.header.setSectionResizeMode(0, QHeaderView.Stretch) self.header.setSectionResizeMode(1, QHeaderView.ResizeToContents) self.header.setSectionResizeMode(2, QHeaderView.ResizeToContents) self.header.setSectionResizeMode(3, QHeaderView.ResizeToContents) self.header.setSectionResizeMode(4, QHeaderView.ResizeToContents) self.populate_student_data() self.studentTableWidget.itemChanged.connect(self.log_change) def create_record_table(self): self.recordTableWidget = QTableWidget() row_count = c.execute("SELECT COUNT(*) FROM recorddata").fetchone()[0] self.recordTableWidget.setRowCount(row_count) self.recordTableWidget.setColumnCount(4) self.recordTableWidget.setShowGrid(True) self.recordTableWidget.setHorizontalHeaderLabels( ['Date', 'Name', 'Student ID', 'Hours Added']) self.header = self.recordTableWidget.horizontalHeader() self.header.setSectionResizeMode(0, QHeaderView.Stretch) self.header.setSectionResizeMode(1, QHeaderView.ResizeToContents) self.header.setSectionResizeMode(3, QHeaderView.ResizeToContents) self.header.setSectionResizeMode(2, QHeaderView.ResizeToContents) self.populate_record_data() def create_calendar(self): self.my_calendar = QCalendarWidget(self) self.my_calendar.move(1000, 70) self.my_calendar.resize(300, 200) self.ldate = QLabel(self) self.ldate.move(1100, 280) self.ldate.setFrameStyle(QFrame.Panel | QFrame.Sunken) self.ldate.setLineWidth(2) self.my_calendar.clicked[QDate].connect(self.on_date_selection) self.ldate.setText(self.my_calendar.selectedDate().toString()) self.ldate.resize(self.ldate.sizeHint()) def on_date_selection(self, date): self.ldate.setText(date.toString()) self.ldate.resize(self.ldate.sizeHint()) def populate_student_data(self): c.execute("SELECT * FROM studentdata") student_data = c.fetchall() self.edit = False self.studentTableWidget.setRowCount(0) self.studentTableWidget.setRowCount(len(student_data)) for i in range(len(student_data)): self.studentTableWidget.setItem( i, 0, QTableWidgetItem(str(student_data[i][0]))) self.studentTableWidget.setItem( i, 1, QTableWidgetItem(str(student_data[i][1]))) self.studentTableWidget.setItem( i, 2, QTableWidgetItem(str(student_data[i][2]))) self.studentTableWidget.setItem( i, 3, QTableWidgetItem(str(student_data[i][3]))) self.studentTableWidget.setItem( i, 4, QTableWidgetItem(str(student_data[i][4]))) self.edit = True def populate_record_data(self): c.execute("SELECT * FROM recorddata") record_data = c.fetchall()[::-1] self.recordTableWidget.setRowCount(0) self.recordTableWidget.setRowCount(len(record_data)) for i in range(len(record_data)): self.recordTableWidget.setItem( i, 0, QTableWidgetItem(str(record_data[i][0]))) self.recordTableWidget.setItem( i, 1, QTableWidgetItem(str(record_data[i][1]))) self.recordTableWidget.setItem( i, 2, QTableWidgetItem(str(record_data[i][2]))) self.recordTableWidget.setItem( i, 3, QTableWidgetItem(str(record_data[i][3]))) def log_change(self, item): if self.edit: cols = {0: "name", 1: "number", 2: "grade", 3: "hours", 4: "csa"} c.execute("SELECT * FROM studentdata") student_data = c.fetchall() student_number = student_data[item.row()][1] student_name = student_data[item.row()][0] old_hours = student_data[item.row()][3] if item.column() == 3: hours = item.text() if hours.isdigit() == False: try: hours = eval(hours) c.execute( "UPDATE studentdata SET hours = ? WHERE number = ?", ( hours, student_number, )) self.update_csa(float(hours), student_number, item) c.execute("INSERT INTO recorddata VALUES (?, ?, ?, ?)", (datetime.now().strftime("%B %d, %Y %I:%M %p"), \ student_name, student_number, str('%.3f' % (float(hours)-old_hours)).rstrip('0').rstrip('.'),)) self.populate_record_data() except Exception as e: value_error = QMessageBox() value_error.setIcon(QMessageBox.Critical) value_error.setInformativeText( 'Please enter a valid expression or number') value_error.setWindowTitle("Error: Value") value_error.exec_() else: c.execute( "UPDATE studentdata SET hours = ? WHERE number = ?", ( hours, student_number, )) self.update_csa(float(hours), student_number, item) c.execute("INSERT INTO recorddata VALUES (?, ?, ?, ?)", (datetime.now().strftime("%B %d, %Y %I:%M %p"), \ student_name, student_number, str('%.3f' % (float(hours)-old_hours)).rstrip('0').rstrip('.'),)) self.populate_record_data() else: try: c.execute( "UPDATE studentdata SET {} = ? WHERE number = ?". format(cols[item.column()]), ( item.text(), student_number, )) if item.column() == 0 or item.column() == 1: c.execute( "UPDATE recorddata SET {} = ? WHERE number = ?". format(cols[item.column()]), ( item.text(), student_number, )) self.populate_record_data() except Exception as e: insert_error = QMessageBox() insert_error.setIcon(QMessageBox.Critical) insert_error.setInformativeText( 'Please check your Student ID is unique') insert_error.setWindowTitle("Error: Values") insert_error.exec_() replace_list = [ '/' * (i + 1) for i in range(len(student_data)) ] replace_existing = [ i[1] for i in student_data if i[1] in replace_list ] replace_new = [ i for i in replace_list if i not in replace_existing ] replace_new.sort(key=len) c.execute( "UPDATE studentdata SET number = ? WHERE number = ?", ( replace_new[0], student_number, )) c.execute( "UPDATE recorddata SET number = ? WHERE number = ?", ( replace_new[0], student_number, )) self.studentTableWidget.setItem( item.row(), item.column(), QTableWidgetItem(replace_new[0])) conn.commit() def update_csa(self, hours, student_number, item): csa_switcher = { 50: "CSA Community", 200: "CSA Service", 500: "CSA Achievement" } adjusted_hours = 500 if hours >= 500 else 200 if hours >= 200 else 50 if hours >= 50 else 0 csa_award = csa_switcher.get(adjusted_hours, "N/A") c.execute("UPDATE studentdata SET csa = ? WHERE number = ?", (csa_award, student_number)) conn.commit() try: self.studentTableWidget.blockSignals(True) self.studentTableWidget.setItem(item.row(), 4, QTableWidgetItem(str(csa_award))) self.studentTableWidget.setItem( item.row(), 3, QTableWidgetItem(str('%.3f' % hours).rstrip('0').rstrip('.'))) self.studentTableWidget.blockSignals(False) except Exception as e: print(e) c.execute("SELECT * FROM studentdata") @pyqtSlot() def add_student(self): # i is input iname = self.tbname.text() inumber = self.tbnumber.text() igrade = str(self.bgrade.currentText()) ihours = self.tbhours.text() icsa = str(self.bcsa.currentText()) try: for i in range(5): if [iname, inumber, igrade, ihours, icsa][i] == '': raise Exception int(ihours) c.execute('''INSERT INTO studentdata VALUES (?, ?, ?, ?, ?)''', ( iname, inumber, igrade, ihours, icsa, )) c.execute('''INSERT INTO recorddata VALUES (?, ?, ?, ?)''', ( datetime.now().strftime("%B %d, %Y %I:%M %p"), iname, inumber, ihours, )) conn.commit() self.populate_student_data() self.populate_record_data() except Exception as e: insert_error = QMessageBox() insert_error.setIcon(QMessageBox.Critical) insert_error.setInformativeText( 'Please check your Student ID is unique, all inputs are filled out, and hours is a number' ) insert_error.setWindowTitle("Error: Values") insert_error.exec_() @pyqtSlot() def remove_students(self): selected = self.studentTableWidget.selectedItems() selected_dict = {} for item in selected: if item.row() in selected_dict: selected_dict[item.row()] += 1 else: selected_dict[item.row()] = 1 c.execute('''SELECT * FROM studentdata''') student_data = c.fetchall() numbers = () for key in reversed(list(selected_dict.keys())): if selected_dict[key] == 5: self.studentTableWidget.removeRow(key) numbers += (student_data[key][1], ) c.execute( "DELETE FROM studentdata WHERE number IN ({})".format(", ".join( "?" * len(numbers))), numbers) c.execute( "DELETE FROM recorddata WHERE number IN ({})".format(", ".join( "?" * len(numbers))), numbers) self.populate_record_data() conn.commit() @pyqtSlot() def compile_pdf(self): pdf = FPDF() pdf.add_page() pdf.set_font("courier", size=12) if self.btimespan.currentText() == "Weeks": start_range = (datetime.now() - timedelta(7)) end_range = datetime.now() txt = "Last Week Report" elif self.btimespan.currentText() == "Months": start_range = (datetime.now() - timedelta(30)) end_range = datetime.now() txt = "Last Week Report" else: start_range = datetime.strptime(self.lstart.text(), "%a %b %d %Y") end_range = datetime.strptime(self.lend.text(), "%a %b %d %Y") txt = "Custom Report: %s - %s" % (start_range.strftime( "%B %d, %Y"), end_range.strftime("%B %d, %Y")) pdf.cell(200, 10, txt=txt, ln=1, align="C") c.execute('''SELECT * FROM recorddata''') datafetch = c.fetchall() record_data = [record for record in datafetch if datetime.strptime(record[0], ("%B %d, %Y %I:%M %p")) >= start_range and\ datetime.strptime(record[0], ("%B %d, %Y %I:%M %p")) <= end_range][::-1] if record_data == []: insert_error = QMessageBox() insert_error.setIcon(QMessageBox.Critical) insert_error.setInformativeText('No data to Compile') insert_error.setWindowTitle("Error: Data") insert_error.exec_() else: field1_max = len( max([str(record[0]) for record in record_data], key=len)) field2_max = len( max([str(record[1]) for record in record_data], key=len)) field3_max = len( max([str(record[2]) for record in record_data], key=len)) field4_max = len( max([str(record[3]) for record in record_data], key=len)) field_maxes = [field1_max, field2_max, field3_max, field4_max] xpos = 200 ypos = 15 yline = 35 iconst = 2.725 sconst = 2.4 spacer = 0 if sum(field_maxes) > 75 else int( (75 - sum(field_maxes)) / 3) line_count = 0 page_lines = 17 if spacer == 0: pdf.set_font("courier", size=9) spacer = 0 if sum(field_maxes) > 100 else int( (100 - sum(field_maxes)) / 3) iconst *= 0.75 sconst *= 0.75 for record in record_data: txt = '' for i in range(len(list(record))): txt += str( record[i]) + ' ' * int(field_maxes[i] - len(str(record[i])) + spacer) pdf.cell(xpos, ypos, txt=txt, ln=1, align="L") pdf.line(0, yline, 400, yline) yline += 15 line_count += 1 newx = 0 if line_count % page_lines == 0: yline = 10 title_space = 25 if line_count == page_lines else 10 for i in field_maxes[0:3]: newx += (i) * iconst + (spacer) * sconst pdf.line(newx, title_space, newx, 20 + 15 * page_lines) elif line_count == len(record_data): title_space = 25 if line_count < page_lines else 10 footer_space = 20 if line_count < page_lines else 10 for i in field_maxes[0:3]: newx += (i) * iconst + (spacer) * sconst pdf.line(newx, title_space, newx, footer_space + 15 * (line_count % page_lines)) if len(record_data) > page_lines: pdf.line(0, yline, 400, yline) c.execute('''SELECT name, number FROM studentdata''') student_data = c.fetchall() for student in student_data: if student[1] in [record[2] for record in record_data]: total_user_hours = str( round( sum([ record[3] for record in record_data if record[2] == student[1] ]), 3)) txt = ' ' * int( sum(field_maxes) + spacer * 3 - len(total_user_hours) - len(student[0]) - 2) + student[0] + ': ' + total_user_hours pdf.cell(xpos, ypos, txt=txt, ln=1, align="L") total_hours = str( round(sum([record[3] for record in record_data]), 3)) txt = ' ' * int( sum(field_maxes) + spacer * 3 - len(total_hours) - 13) + "Total Hours: " + total_hours pdf.cell(xpos, ypos, txt=txt, ln=1, align="L") pdf.output("community_service_program.pdf") #generate random student with hours added on a random date @pyqtSlot() def generate_students(self): start_dt = date.today().replace(day=1, month=1).toordinal() end_dt = date.today().toordinal() random_day = date.fromordinal(random.randint( start_dt, end_dt)).strftime("%B %d, %Y %I:%M %p") random_name = fake.name() random_id = fake.ssn() random_grade = random.choice(['9th', '10th', '11th', '12th']) random_hours = random.randint(1, 500) csa_award = 'CSA Community' if random_hours >= 500 else ( 'CSA Service' if random_hours >= 200 else ('CSA Achievement' if random_hours >= 50 else 'N/A')) c.execute('''INSERT INTO studentdata VALUES (?, ?, ?, ?, ?)''', ( random_name, str(random_id), random_grade, random_hours, csa_award, )) c.execute('''INSERT INTO recorddata VALUES (?, ?, ?, ?)''', ( str(random_day), random_name, str(random_id), random_hours, )) conn.commit() self.populate_record_data() self.populate_student_data() @pyqtSlot() def set_start_date(self): if datetime.strptime( self.lend.text(), "%a %b %d %Y") < datetime.strptime( self.my_calendar.selectedDate().toString(), "%a %b %d %Y"): self.lend.setText(self.my_calendar.selectedDate().toString()) self.lend.resize(self.lend.sizeHint()) self.lstart.setText(self.my_calendar.selectedDate().toString()) self.lstart.resize(self.lstart.sizeHint().width() + 6, self.lstart.sizeHint().height() + 3) @pyqtSlot() def set_end_date(self): if datetime.strptime(self.my_calendar.selectedDate().toString(), "%a %b %d %Y") < datetime.strptime( self.lstart.text(), "%a %b %d %Y"): date_error = QMessageBox() date_error.setIcon(QMessageBox.Critical) date_error.setInformativeText( 'End date cannot be before start date') date_error.setWindowTitle("Error: Date") date_error.exec_() else: self.lend.setText(self.my_calendar.selectedDate().toString()) self.lend.resize(self.lend.sizeHint().width() + 6, self.lend.sizeHint().height() + 3)
class LabelFrame(QWidget): #asignal = pyqtSignal(str) def __init__(self, parent): global GLOBAL_PRODUCTS super(LabelFrame, self).__init__(parent) self.parent = parent print('LabelFrame: my parent is',self.parent) self.initFrame() def initFrame(self): self.mylabelwriter = Labelwriter('127.0.0.1', 9100) self.mylabelwriter.beep() self.productindexselected = 0 #mylabelwriter.print_label(**kwarg_partial) self.setFixedWidth(500) layout = QGridLayout() lbl_product = QLabel('Product') self.input_product = QComboBox(self) for product in GLOBAL_PRODUCTS: self.input_product.addItem(GLOBAL_PRODUCTS[product]['friendlyname']['NOR']) lbl_language = QLabel('Language') self.input_language = QComboBox(self) self.input_language.addItems(['NOR - Norwegian', 'ENG - English', 'SPA - Spanish', 'NLD - Dutch', 'FRA - French']) lbl_grade = QLabel('Grade') self.input_grade = QComboBox(self) self.input_grade.addItem('Select a product') self.lbl_pcskg = QLabel('pcskg') lbl_processing = QLabel('Processing') self.input_processing = QComboBox(self) self.input_processing.addItem('Select a product') lbl_batch = QLabel('Batch') self.input_batch = QLineEdit(self) self.input_batch.setText('000001') lbl_harvest_date = QLabel('Harvest date') self.input_harvest_date = QCalendarWidget(self) self.input_harvest_date.resize(100,50) lbl_customer = QLabel('Customer') self.input_customer = QComboBox(self) self.input_customer.setEditable(True) self.input_customer.addItem('CUSTOMER - You can edit this field if you want') for customer in GLOBAL_CUSTOMERS: self.input_customer.addItem(GLOBAL_CUSTOMERS[customer]['printablename']) self.btn_print_label = QPushButton('Print Label', self) self.btn_print_label.setFixedHeight(50) self.input_printhack = QLineEdit(self) self.input_printhack.setText('') self.input_printhack.setPlaceholderText('++++++') layout.setSpacing(10) layout.addWidget(lbl_language, 1, 0) layout.addWidget(self.input_language, 1, 1) layout.addWidget(lbl_product, 2, 0) layout.addWidget(self.input_product, 2, 1) layout.addWidget(lbl_grade, 3, 0) layout.addWidget(self.input_grade, 3, 1) layout.addWidget(self.lbl_pcskg, 4, 1) layout.addWidget(lbl_processing, 5, 0) layout.addWidget(self.input_processing, 5, 1) layout.addWidget(lbl_batch, 6, 0) layout.addWidget(self.input_batch, 6, 1) layout.addWidget(lbl_harvest_date, 7, 0) layout.addWidget(self.input_harvest_date, 7, 1) layout.addWidget(lbl_customer, 8, 0) layout.addWidget(self.input_customer, 8, 1) layout.addWidget(self.input_printhack, 9, 0) layout.addWidget(self.btn_print_label, 9, 1) self.setLayout(layout) # Set up signals self.input_product.currentIndexChanged[int].connect(self.on_product_combo_currentIndexChanged) self.input_grade.currentIndexChanged[int].connect(self.on_grade_combo_currentIndexChanged) self.input_language.activated[str].connect(self.on_language_combo_activated) self.btn_print_label.clicked.connect(self.on_print_label_clicked) self.input_printhack.textEdited[str].connect(self.on_printhack_edited) @pyqtSlot() def on_print_label_clicked(self): print('PRINTING LABEL') langhack = self.input_language.currentText()[0:3] # Not very smart... productindex = self.input_product.currentIndex() # So much hack, very profit. friendlyname = GLOBAL_PRODUCTS[productindex]['friendlyname'][langhack] scientificname = GLOBAL_PRODUCTS[productindex]['scientificname'] productionmethod = self.input_processing.currentText() grade = self.input_grade.currentText() customer = self.input_customer.currentText() batchno = self.input_batch.text() # http://zetcode.com/gui/pyqt5/datetime/ catchdate = self.input_harvest_date.selectedDate().toString(format = Qt.ISODate) print(grade) pcskg = self.lbl_pcskg.text() #print(pcskg) #for i, grade in enumerate(GLOBAL_PRODUCTS[index]['grades']): # A dictionary # print(grade) # self.input_grade.addItem(grade[i]) if langhack == 'NOR': productinthirdlanguage = '' elif langhack == 'ENG': productinthirdlanguage = '' elif langhack == 'SPA': productinthirdlanguage = 'Nombre del producto' elif langhack == 'FRA': productinthirdlanguage = 'Nom du produit' elif langhack == 'NLD': productinthirdlanguage = 'Productnaam' else: productinthirdlanguage = '' print(friendlyname) kwarg_partial = { 'friendlyname':friendlyname, 'scientificname':scientificname, 'productinthirdlanguage':productinthirdlanguage, 'gtin':GLOBAL_PRODUCTS[productindex]['gtin'],# 'processingmethod':productionmethod, 'weight':self.parent.scaleframe.commaweight, 'grade':grade, 'customer':customer, 'batchno':batchno, 'catchdate':catchdate, 'pcskg':pcskg } print(kwarg_partial) #print(self.parent.scaleframe.lbl_weight.text()) self.mylabelwriter.print_label(**kwarg_partial) @pyqtSlot(str) def on_printhack_edited(self, text): print(text) if len(text) > 0: if text[-1] == '+': print('pluss') self.on_print_label_clicked() # Acitvate label print def on_language_combo_activated(self, text): print(text) #self.asignal.emit('selected', text) def on_product_combo_currentIndexChanged(self, index): self.input_grade.clear() print('index', index) self.productindexselected = index #product = text for i, grade in enumerate(GLOBAL_PRODUCTS[index]['grades']): # A dictionary print(grade) self.input_grade.addItem(grade[i]) self.input_processing.clear() print('index', index) #product = text for i, process in enumerate(GLOBAL_PRODUCTS[index]['processing']): # A dictionary print(process) self.input_processing.addItem(process) def on_grade_combo_currentIndexChanged(self, index): if index == -1: return pcskg = GLOBAL_PRODUCTS[self.productindexselected]['grades'][index]['pcs'] print(pcskg) self.lbl_pcskg.setText(pcskg)
class Example(QWidget): def __init__(self): super().__init__() self.clear_lineedit = QLineEdit(self) self.info_sort = '' self.list = [] self.dict = {} self.flag_print_file_info = True self.initUI() def initUI(self): self.setGeometry(300, 300, 940, 650) self.setWindowTitle('Первая программа') self.myListView = QListView(self) self.myListView.resize(300, 500) self.myListView.move(600, 0) self.cal = QCalendarWidget(self) self.cal.resize(500, 500) self.cal.move(0, 0) self.time = QTimeEdit(self) self.time.resize(50, 50) self.time.move(520, 250) self.helps = QLabel('Введите событие:', self) self.helps.move(0, 530) self.input_ivents = QLineEdit(self) self.input_ivents.resize(200, 50) self.input_ivents.move(130, 520) self.setStyleSheet("QLabel { font-size:15px}") self.button = QPushButton('Добавить', self) self.button.move(80, 580) self.print_file_info() self.button.clicked.connect(self.push) self.show() def print_file_info(self): if len(z) > 1: for x in range(len(z)): x = z[x].split() self.dict[x[1]] = x[0] x = x[1].split('.') x = ''.join(x) self.list.append(x) elif len(z) == 2: x = z[0].split() self.dict[x[1]] = x[0] x = x[1].split('.') x = ''.join(x) self.list.append(x) if self.flag_print_file_info: for x in range(len(self.list)): self.list[x] = int(self.list[x]) self.list.sort() model = QtGui.QStandardItemModel() self.myListView.setModel(model) for x in range(len(self.list)): self.list[x] = str(self.list[x]) for e in self.list: for x in self.dict.keys(): if ''.join(x.split('.')) == str(e): p = x.split('.') i = QtGui.QStandardItem(self.dict[x] + ' ' + p[2] + '.' + p[1] + '.' + p[0] + ' ' + p[3] + ':' + p[-1]) model.appendRow(i) self.show() self.flag_print_file_info = False def push(self): time: QTime = self.time.time() self.ivent = self.input_ivents.text() self.info_input = '' date: QDate = self.cal.selectedDate() self.info_input += str(date.year()) + '.' self.info_sort += str(date.year()) if len(str(date.month())) == 1: self.info_input += '0' + str(date.month()) + '.' self.info_sort += '0' + str(date.month()) else: self.info_input += str(date.month()) + '.' self.info_sort += str(date.month()) if len(str(date.day())) == 1: self.info_input += '0' + str(date.day()) + '.' self.info_sort += '0' + str(date.day()) else: self.info_input += str(date.day()) + '.' self.info_sort += str(date.day()) if len(str(time.hour())) == 1: self.info_input += '0' + str(time.hour()) + '.' self.info_sort += '0' + str(time.hour()) else: self.info_input += str(time.hour()) + '.' self.info_sort += str(time.hour()) if len(str(time.minute())) == 1: self.info_input += '0' + str(time.minute()) self.info_sort += '0' + str(time.minute()) else: self.info_input += str(time.minute()) self.info_sort += str(time.minute()) self.info_sort = int(self.info_sort) self.list.append(self.info_sort) self.dict[self.info_input] = self.ivent for x in range(len(self.list)): self.list[x] = int(self.list[x]) self.list.sort() self.info_sort = '' model = QtGui.QStandardItemModel() self.myListView.setModel(model) for x in range(len(self.list)): self.list[x] = str(self.list[x]) for e in self.list: for x in self.dict.keys(): if ''.join(x.split('.')) == str(e): p = x.split('.') i = QtGui.QStandardItem(self.dict[x] + ' ' + p[2] + '.' + p[1] + '.' + p[0] + ' ' + p[3] + ':' + p[-1]) model.appendRow(i) with open('file.txt', 'w', encoding='utf-8') as g: g.seek(0) for x in self.dict.keys(): g.write(self.dict[x] + ' ' + x + '\n') g.close()