Exemple #1
0
    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()
Exemple #4
0
Fichier : gui.py Projet : RMDE/DBMS
 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()
Exemple #6
0
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)
Exemple #7
0
    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()
Exemple #8
0
    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()
Exemple #10
0
    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()
Exemple #11
0
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()
Exemple #12
0
    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()
Exemple #13
0
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())
Exemple #14
0
    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()
Exemple #15
0
	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)
Exemple #17
0
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()