示例#1
0
文件: date.py 项目: sinsy/pythonLearn
class WindowClass(QWidget):
    def __init__(self, parent=None):

        super(WindowClass, self).__init__(parent)
        self.btn = QPushButton(self)  #self参数则让该按钮显示当前窗体中
        self.btn.setText("点击获取日期信息")
        self.btn.clicked.connect(self.showdate)

        self.dateEdit = QDateEdit(self)
        self.timeEdit = QTimeEdit(self)
        self.dateTimeEdit = QDateTimeEdit(self)
        self.dateEdit.setCalendarPopup(True)
        #self.timeEdit.setCalendarPopup(True)#弹出界面是失效的注意;
        #self.dateTimeEdit.setCalendarPopup(True)#时间是无法选择的
        self.dateEdit.move(10, 200)
        self.timeEdit.move(10, 100)
        self.dateTimeEdit.move(10, 300)
        self.dateEdit.setDisplayFormat("yyyy-MM-dd")
        self.timeEdit.setDisplayFormat("HH:mm:ss")
        self.dateTimeEdit.setDisplayFormat("yyyy-MM-dd HH:mm:ss")
        self.setWindowTitle("QDateEdit和QDateTimeEdit控件使用")

    def showdate(self):
        print(self.dateEdit.text())
示例#2
0
class TimerWidget(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()
        # Инициализируем плеер и плейлист, на котором поставим цикличное воспроизведение
        self.playlist = QMediaPlaylist(self)
        self.playlist.setPlaybackMode(QMediaPlaylist.Loop)
        self.player = QMediaPlayer()
        # Создадим пустую ссылку, чтобы программа не крашилась, если пользователь не выберет мелодию
        self.url = QUrl()
        # Подскажем для чего кнопка
        self.lbl = QLabel('Выберите мелодию для таймера:', self)
        self.lbl.move(165, 100)
        # Кнопка для выбора файла с мелодией
        self.btn_getfile = QPushButton('Выбрать файл', self)
        self.btn_getfile.move(200, 125)
        self.btn_getfile.resize(100, 50)
        self.btn_getfile.clicked.connect(self.getfile)
        # Кнопка старта таймера
        self.btn_start = QPushButton('Старт', self)
        self.btn_start.move(225, 225)
        self.btn_start.resize(50, 50)
        self.btn_start.clicked.connect(self.start_timer)
        # Кнопка остановки таймера до того, как он закончит отсчет
        self.btn_stop = QPushButton('Стоп', self)
        self.btn_stop.move(250, 225)
        self.btn_stop.resize(50, 50)
        self.btn_stop.clicked.connect(self.stop_timer)
        self.btn_stop.setVisible(False)
        # Кнопка паузы таймера
        self.btn_pause = QPushButton('Пауза', self)
        self.btn_pause.move(200, 225)
        self.btn_pause.resize(50, 50)
        self.btn_pause.clicked.connect(self.pause_timer)
        self.btn_pause.setVisible(False)
        # Кнопка для продолжения отсчета таймера
        self.btn_continue = QPushButton('Дальше', self)
        self.btn_continue.move(200, 225)
        self.btn_continue.resize(50, 50)
        self.btn_continue.clicked.connect(self.continue_timer)
        self.btn_continue.setVisible(False)
        # Кнопка для выключения таймера, когда он закончит отсчет
        self.btn_off = QPushButton('Выкл', self)
        self.btn_off.move(225, 225)
        self.btn_off.resize(50, 50)
        self.btn_off.clicked.connect(self.timer_off)
        self.btn_off.setVisible(False)
        # Спрашивваем значение таймера
        self.get_timer = QTimeEdit(self)
        self.get_timer.move(185, 175)
        self.get_timer.resize(130, 50)
        self.get_timer.setFont(QFont('Times', 15, QFont.Bold))
        self.get_timer.setDisplayFormat('HH:mm:ss')
        # Дисплей для вывода таймера
        self.dsp = QLCDNumber(self)
        self.dsp.resize(200, 50)
        self.dsp.move(150, 175)
        self.dsp.setVisible(False)
        self.dsp.setDigitCount(8)
        # Таймер
        self.nTimer = QTimer()
        self.nTimer.timeout.connect(self.timer)

    def initUI(self):
        self.setGeometry(100, 100, 500, 500)
        self.setWindowTitle('Таймер')

    def start_timer(self):
        # Добавляем мелодию в плеер
        self.content = QMediaContent(self.url)
        self.playlist.addMedia(self.content)
        self.player.setPlaylist(self.playlist)
        # Выводим начальное значение времени на дисплей
        self.dsp.display(self.get_timer.time().toString('hh:mm:ss'))
        # Переводим время в секунды
        timer = self.get_timer.time()
        timer_text = timer.toString('hh:mm:ss')
        timer_int = list(map(lambda x: int(x), timer_text.split(':')))
        self.timer_in_sec = timer_int[0]*3600 + timer_int[1]*60 + timer_int[2]
        # Проверяем не установили ли нулевое значение
        if self.timer_in_sec == 0:
            self.timer_timeout()
        else:
            # Запускаем таймер
            self.nTimer.start(1000)
            # Махинации с показом кнопок
            self.btn_start.setVisible(False)
            self.btn_pause.setVisible(True)
            self.btn_stop.setVisible(True)
            self.dsp.setVisible(True)
            self.get_timer.setVisible(False)
            self.lbl.setVisible(False)
            self.btn_getfile.setVisible(False)

    def timer(self):
        # Функция обновления таймера и дисплея со временем
        # Делаем обратный отсчет, отнимая каждую секунду единицу из начального значения
        self.timer_in_sec -= 1
        # Переводим целочисленные значения в строку
        timer_text = list(map(lambda x: str(x), [self.timer_in_sec // 3600,
                                                 (self.timer_in_sec % 3600) // 60,
                                                 (self.timer_in_sec % 3600) % 60]))
        # Если один символ, то к нему добавляется ноль
        if len(timer_text[0]) == 1:
            timer_text[0] = '0' + timer_text[0]
        if len(timer_text[1]) == 1:
            timer_text[1] = '0' + timer_text[1]
        if len(timer_text[2]) == 1:
            timer_text[2] = '0' + timer_text[2]
        # Объединяем список в формат hh:mm:ss
        timer_text = ':'.join(timer_text)
        # Выводим текст со временем на дисплей
        self.dsp.display(timer_text)
        # Если таймер дошел до нуля:
        if self.timer_in_sec == 0:
            self.timer_timeout()
        else:
            # Обновляем таймер
            self.nTimer.start(1000)

    def stop_timer(self):
        # Останавливаем таймер
        self.nTimer.stop()
        # Махинации с кнопками
        self.btn_start.setVisible(True)
        self.btn_stop.setVisible(False)
        self.btn_pause.setVisible(False)
        self.dsp.setVisible(False)
        self.btn_continue.setVisible(False)
        self.get_timer.setVisible(True)
        self.btn_getfile.setVisible(True)
        self.lbl.setVisible(True)

    def continue_timer(self):
        # Продолжаем таймер с того места, где остановились
        self.nTimer.start(self.inter)
        # Махинации с показом кнопок
        self.btn_continue.setVisible(False)
        self.btn_pause.setVisible(True)

    def pause_timer(self):
        # Ловим оставшееся время таймера
        self.inter = self.nTimer.remainingTime()
        # Останавливаем таймер и делаем махинации с показом кнопок
        self.nTimer.stop()
        self.btn_pause.setVisible(False)
        self.btn_continue.setVisible(True)

    def timer_off(self):
        # Махинации с кнопками
        self.btn_start.setVisible(True)
        self.dsp.setVisible(False)
        self.get_timer.setVisible(True)
        self.btn_off.setVisible(False)
        self.btn_getfile.setVisible(True)
        self.lbl.setVisible(True)
        # Останавливаем мелодию
        self.player.stop()

    def timer_timeout(self):
        # Останавливаем таймер
        self.nTimer.stop()
        # Махинации с кнопками
        self.get_timer.setVisible(False)
        self.btn_stop.setVisible(False)
        self.btn_pause.setVisible(False)
        self.btn_continue.setVisible(False)
        self.btn_off.setVisible(True)
        self.dsp.setVisible(True)
        self.lbl.setVisible(False)
        self.btn_getfile.setVisible(False)
        # Запускаем функцию воспроизведения мелодии
        self.playmus()

    def playmus(self):
        # Воспроизводим мелодию
        self.player.play()

    def getfile(self):
        # Достаем файл с мелодией и сохраняем её путь
        fname = QFileDialog.getOpenFileName(self, 'Open File', '/home', 'Audio Files (*mp3 *wav)')
        self.url = QUrl.fromLocalFile(fname[0])
示例#3
0
class ReportGen(PageWindow):
    def __init__(self):
        super().__init__()
        self.initUI()
        self.createWidgets()

    def initUI(self):
        self.setWindowTitle("Report Generation")
        self.setFixedSize(400, 590)
        # Set the central widget and the general layout
        self.generalLayout = QVBoxLayout()
        self._centralWidget = QWidget(self)
        self.setCentralWidget(self._centralWidget)
        self._centralWidget.setLayout(self.generalLayout)

    def createWidgets(self):
        self.logSelector=QComboBox(self)
        self.logSelector.resize(110,40)
        self.logSelector.move(140,40)
        self.logSelector.addItem("Resident Log")
        self.logSelector.addItem("Visitor Log")
        self.datepicker=QDateEdit(self)
        self.datepicker.setCalendarPopup(True)
        self.datepicker.move(145,120)
        
        self.datepicker.setDate(dt.today())
        self.startTime=QTimeEdit(self)
        self.startTime.move(65,200)
        self.endTime=QTimeEdit(self)
        self.endTime.move(225,200)
        self.genButton=QPushButton("Generate",self)
        self.genButton.move(145,280)
        self.backButton=QPushButton("Back",self)
        self.backButton.move(145,340)
        self.backButton.clicked.connect(self.goBack)
        self.genButton.clicked.connect(self.repGen)
    def goBack(self):
        self.goto("welcome")

    def repGen(self):
        #print("Hey")
        log=self.logSelector.currentText()
        date=str(self.datepicker.date().toPyDate())
        #print(date)
        start=str(self.startTime.time().toPyTime())
        end=str(self.endTime.time().toPyTime())
        vbox=QVBoxLayout()
        table=QTableWidget()
        #print("Heyo")
        #print(log+" "+date+" "+start+" "+end)
        repList=getRepData(log,date,start,end)
        rows=len(repList)
        print(repList)
        table.setRowCount(rows+1)
        if(log=="Resident Log"):
            #print("hey")
            table.setColumnCount(4)
            table.setItem(0,0,QTableWidgetItem("Vehicle No."))
            table.setItem(0,1,QTableWidgetItem("Flat No."))
            table.setItem(0,2,QTableWidgetItem("Entry Time"))
            table.setItem(0,3,QTableWidgetItem("Exit Time"))
            table.resize(650,400)
            
        else:
            table.setColumnCount(5)
            table.setItem(0,0,QTableWidgetItem("Vehicle No."))
            table.setItem(0,1,QTableWidgetItem("Visitor Name"))
            table.setItem(0,2,QTableWidgetItem("Flat No."))
            table.setItem(0,3,QTableWidgetItem("Entry Time"))
            table.setItem(0,4,QTableWidgetItem("Exit Time"))
            table.resize(800,400)

        try:
            i=1
            j=0
            for row in repList:
                for j in range(len(row)):
                    #print(j+" "+row[j])
                    table.setItem(i,j,QTableWidgetItem(row[j]))
                i+=1
        except Exception as e:
            print(e)
        
        table.horizontalHeader().setDefaultSectionSize(155)
        table.show()
        vbox.addWidget(table)
        self.setLayout(vbox)
示例#4
0
class AlarmWidget(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()
        # Флаг, чтобы функция вызова будильника не вызвыалась с каждым тиком
        self.flag_get_up = True
        # Нулевое время для сброса часов
        self.zero_time = QTime(0, 0)
        # Пустая ссылка
        self.url = QUrl()
        # Инициализируем плеер и плейлист, который после зацикливаем
        self.playlist = QMediaPlaylist(self)
        self.playlist.setPlaybackMode(QMediaPlaylist.Loop)
        self.player = QMediaPlayer()
        # Кнопка для выбора файла с музыкой
        self.btn_getfile = QPushButton('Выбрать файл', self)
        self.btn_getfile.setFont(QFont('Times', 10))
        self.btn_getfile.move(142.5, 25)
        self.btn_getfile.resize(215, 50)
        self.btn_getfile.setVisible(False)
        self.btn_getfile.clicked.connect(self.getfile)
        # Радио-кнопка для включения будильника
        self.radio_btn1 = QRadioButton('вкл', self)
        self.radio_btn1.move(0, 15)
        self.radio_btn1.setFont(QFont('Times', 10))
        self.radio_btn1.toggled.connect(self.on_off)
        # Радио-кнопка для выключения будильника
        self.radio_btn2 = QRadioButton('выкл', self)
        self.radio_btn2.move(0, 40)
        self.radio_btn2.setChecked(True)
        self.radio_btn2.setFont(QFont('Times', 10))
        self.radio_btn2.toggled.connect(self.on_off)
        # Значение будильника
        self.timer_edit = QTimeEdit(self)
        self.timer_edit.setDisplayFormat('hh:mm')
        self.timer_edit.move(200, 110)
        self.timer_edit.resize(100, 50)
        self.timer_edit.setFont(QFont('Times', 18, QFont.Bold))
        self.timer_edit.setVisible(False)
        # Бирка
        self.lbl = QLabel('Будильник:', self)
        self.lbl.move(0, 0)
        self.lbl.setFont(QFont('Times', 10))
        # Подсказка для кнопки выбора мелодии
        self.lbl2 = QLabel('Выберите мелодию для будильника:', self)
        self.lbl2.move(142.5, 0)
        self.lbl2.setVisible(False)
        self.lbl2.setFont(QFont('Times', 10))
        # Бирка
        self.lbl3 = QLabel('Будильник установлен на:', self)
        self.lbl3.move(175, 185)
        self.lbl3.setFont(QFont('Times', 10))
        self.lbl3.setVisible(False)
        # Бирка
        self.lbl4 = QLabel('Установите время будильника:', self)
        self.lbl4.move(150, 85)
        self.lbl4.setFont(QFont('Times', 10))
        self.lbl4.setVisible(False)
        # Кнопка выключения будильника, когда он сработает
        self.btn = QPushButton('Выключить\nбудильник', self)
        self.btn.clicked.connect(self.awake)
        self.btn.resize(100, 100)
        self.btn.move(200, 200)
        self.btn.setFont(QFont('Times', 11, QFont.ExtraBold))
        self.btn.setVisible(False)
        # Дисплей для вывода значения будильника
        self.dis2 = QLCDNumber(self)
        self.dis2.move(200, 210)
        self.dis2.resize(100, 50)
        self.dis2.setVisible(False)
        # Дисплей с текущим временем
        self.dis1 = QLCDNumber(self)
        self.dis1.move(375, 25)
        self.dis1.resize(100, 50)
        # Бирка
        self.lbl5 = QLabel('Сейчас:', self)
        self.lbl5.move(375, 0)
        self.lbl5.setFont(QFont('Times', 10))
        # Таймер
        self.nTimer = QTimer()
        self.nTimer.timeout.connect(self.repeatTime)
        self.nTimer.start()

    def initUI(self):
        self.setGeometry(100, 100, 500, 500)
        self.setWindowTitle('Будильник')

    def repeatTime(self):
        # Вытаскиваем системное время и преобразуем в строку
        self.time = QTime().currentTime()
        time_text = self.time.toString('hh:mm')
        # Вытаскиваем выставленное значение будильника и преобразуем в строку
        timer = self.timer_edit.time()
        timer_text = timer.toString('hh:mm')
        # Выводим значения будильника на дисплей
        self.dis2.display(timer_text)
        # Выводим текущее время
        self.dis1.display(time_text)
        # Проверяем условия срабатывания будильника
        if timer_text == time_text and self.flag_get_up and self.radio_btn1.isChecked(
        ):
            self.flag_get_up = False
            self.get_up()
        else:
            self.flag_get_up = True

    def awake(self):
        # Устанавливаем нулевое значение времени будильника
        self.timer_edit.setTime(self.zero_time)
        # Махинация с показом виджетов
        self.lbl.setVisible(True)
        self.lbl2.setVisible(True)
        self.lbl3.setVisible(True)
        self.lbl4.setVisible(True)
        self.radio_btn1.setVisible(True)
        self.radio_btn2.setVisible(True)
        self.btn_getfile.setVisible(True)
        self.dis2.setVisible(True)
        self.timer_edit.setVisible(True)
        self.btn.setVisible(False)
        # Останавливаем музыку
        self.player.stop()

    def get_up(self):
        # Махинации с показом виджетов
        self.lbl.setVisible(False)
        self.lbl2.setVisible(False)
        self.lbl3.setVisible(False)
        self.lbl4.setVisible(False)
        self.radio_btn1.setVisible(False)
        self.radio_btn2.setVisible(False)
        self.btn_getfile.setVisible(False)
        self.dis2.setVisible(False)
        self.timer_edit.setVisible(False)
        self.btn.setVisible(True)
        # Включаем музыку
        self.player.play()

    def getfile(self):
        # Достаем файл с мелодией и сохраняем её путь
        fname = QFileDialog.getOpenFileName(self, 'Open File', '/home',
                                            'Audio Files (*mp3 *wav)')
        self.url = QUrl.fromLocalFile(fname[0])
        # Устанавливаем музыку в плеер
        self.content = QMediaContent(self.url)
        self.playlist.clear()
        self.playlist.addMedia(self.content)
        self.player.setPlaylist(self.playlist)

    def on_off(self):
        # Включаем/выключаем будильник
        if self.radio_btn1.isChecked():
            self.btn_getfile.setVisible(True)
            self.timer_edit.setVisible(True)
            self.dis2.setVisible(True)
            self.lbl2.setVisible(True)
            self.lbl3.setVisible(True)
            self.lbl4.setVisible(True)
        else:
            self.btn_getfile.setVisible(False)
            self.timer_edit.setVisible(False)
            self.dis2.setVisible(False)
            self.lbl2.setVisible(False)
            self.lbl3.setVisible(False)
            self.lbl4.setVisible(False)
            self.timer_edit.setTime(self.zero_time)
            self.btn.setVisible(False)
            self.player.stop()
class WindowAudiencias(QWidget):
    def __init__(self, db, parent=None):
        super(WindowAudiencias, self).__init__(parent)
        self.db = db
        self.setWindowIcon(QIcon("static/logo.ico"))
        self.setWindowTitle("Audiências do Tribunal de Justiça")
        self.resize(800, 600)
        self.filtered_date = False
        self.filtered_vara = False

        # buttons
        x_btn = 600
        y_btn_gap = 20
        y_btn_step = 50

        self.btn_font = QFont()
        self.btn_font.setBold(True)
        self.btn_font.setPixelSize(12)

        def create_button(window, on_click, text, tip, pos):
            button = QPushButton(text, window)
            button.setToolTip(tip)
            button.move(x_btn, y_btn_gap + y_btn_step * pos)
            button.clicked.connect(on_click)
            button.resize(150, 40)
            button.setFont(self.btn_font)
            return button

        self.btn_insert_audiencia = create_button(
            self, self.on_click_insert_audiencia, 'Inserir Audiência',
            'Criar uma nova Audiência no banco de dados.', 0)
        self.btn_update_audiencia = create_button(
            self, self.on_click_update_audiencia, 'Atualizar Audiência',
            'Atualizar uma Audiência do banco de dados.', 1)
        self.btn_delete_audiencia = create_button(
            self, self.on_click_delete_audiencia, 'Remover Audiência',
            'Remover uma Audiência do banco de dados.', 2)
        self.btn_atividades = create_button(
            self, self.on_click_open_atividades, 'Atividades Audiência',
            'Abrir a janela de atividades da Audiência.', 3)

        # filter buttons
        def create_filter_button(window, on_click, icon, tip, x):
            filter_button = create_button(window, on_click, '', tip, 3.5)
            filter_button.setIcon(QIcon('./static/{}'.format(icon)))
            filter_button.resize(40, 40)
            filter_button.move(x, y_btn_gap + y_btn_step * 3.5)
            filter_button.setIconSize(QSize(30, 30))
            return filter_button

        self.btn_filter_vara = create_filter_button(
            self, self.on_click_filter_vara, 'filter_vara.png',
            'Filtrar Audiências pela Vara.', 300)
        self.btn_filter_date = create_filter_button(
            self, self.on_click_filter_date, 'filter_data.png',
            'Filtrar Audiências por data da Audiência.', 350)
        self.btn_remove_filter_date = create_filter_button(
            self, self.on_click_remove_filters, 'rm_filter.png',
            'Remover filtros das Audiências.', 400)

        # labels
        def create_label(window, text, x, pos):
            label = QLabel(window)
            label.setText(text)
            y_gap = 20
            y_step = 50
            label.move(x, y_gap + pos * y_step)
            return label

        x_in_1 = 50
        x_in_2 = 220

        create_label(self, 'Vara', x_in_1, 0)
        create_label(self, 'Processo', x_in_1, 1)
        create_label(self, 'Tipo', x_in_1, 2)
        create_label(self, 'Audiências', x_in_1, 4)

        create_label(self, 'Horário', x_in_2, 0)
        create_label(self, 'Data Audiência', x_in_2, 1)
        create_label(self, 'Data Despacho', x_in_2, 2)

        # line edit
        y_gap = 37
        y_step = 50

        def create_line_edit(window, x, pos):
            line_edit = QLineEdit(window)
            line_edit.move(x, y_gap + pos * y_step)
            line_edit.resize(150, 24)
            return line_edit

        self.line_processo = create_line_edit(self, x_in_1, 1)

        # date edit
        def create_date_edit(window, x, pos):
            date_edit = QDateEdit(self)
            date_edit.move(x, y_gap + pos * y_step)
            date_edit.resize(150, 24)
            return date_edit

        self.date_data_audiencia = create_date_edit(self, x_in_2, 1)
        self.date_data_despacho = create_date_edit(self, x_in_2, 2)

        # time edit
        self.time_horario = QTimeEdit(self)
        self.time_horario.move(x_in_2, y_gap + 0 * y_step)
        self.time_horario.resize(150, 24)

        # combo-box
        def create_cb(window, list_items, x, pos):
            combo_box = QComboBox(window)
            combo_box.addItems(list_items)
            combo_box.move(x, y_gap + pos * y_step)
            combo_box.resize(150, 24)
            return combo_box

        self.cb_vara = create_cb(self, ["1", "2"], x_in_1, 0)
        self.cb_tipo = create_cb(self, [
            "Instrução e Julgamento", "Oitiva", "Interrogatório",
            "Depoimento Especial", "UNA", "Continuação", "Carta Precatória"
        ], x_in_1, 2)

        # check-box
        self.ck_urgente = QCheckBox("Urgente", self)
        self.ck_urgente.move(x_in_1, y_gap - 17 + 3 * y_step)

        # table
        self.table_audiencias = QTableWidget(self)
        self.table_audiencias.move(50, 240)
        self.table_audiencias.resize(700, 300)
        self.table_audiencias.itemSelectionChanged.connect(
            self.table_audiencias_select)
        self.set_table_audiencias_content(self.filtered_date,
                                          self.filtered_vara)

    # table functions
    def set_table_audiencias_content(self, filtered_date, filtered_vara):
        audiencias = self.db.get_audiencias()
        self.table_audiencias.clear()

        headers = list(self.db.get_audiencia_columns())
        n_rows = len(audiencias)
        self.table_audiencias.setRowCount(n_rows)
        if (n_rows <= 0):
            return

        self.table_audiencias.setColumnCount(len(audiencias[0]))
        self.table_audiencias.setHorizontalHeaderLabels(headers)

        ignored_rows = []
        for row, record in enumerate(audiencias):
            ignore_row = False
            for column, content in enumerate(record):
                self.table_audiencias.setItem(row, column,
                                              QTableWidgetItem(content))

                if (filtered_date):
                    if (headers[column] == 'data_audiencia'
                            and content != self.get_date_data_audiencia()):
                        if (row not in ignored_rows):
                            ignored_rows.append(row)

                if (filtered_vara):
                    if (headers[column] == 'vara'
                            and content != self.get_cb_vara()):
                        if (row not in ignored_rows):
                            ignored_rows.append(row)

        for i, row in enumerate(ignored_rows):
            self.table_audiencias.removeRow(row - i)

    def table_audiencias_select(self):
        currentRow = self.table_audiencias.currentRow()
        self.table_audiencias.selectRow(currentRow)

        vara_index = self.cb_vara.findText(
            self.table_audiencias.item(currentRow, 0).text())
        self.cb_vara.setCurrentIndex(vara_index)

        tipo_index = self.cb_tipo.findText(
            self.table_audiencias.item(currentRow, 2).text())
        self.cb_tipo.setCurrentIndex(tipo_index)

        status_urgente = self.table_audiencias.item(currentRow, 3).text()
        status_urgente = 2 if status_urgente == 'Sim' else 0
        self.ck_urgente.setCheckState(status_urgente)

        txt_horario = self.table_audiencias.item(currentRow, 4).text()
        self.time_horario.setTime(self.transform_to_qtime(txt_horario))

        select_processo = self.table_audiencias.item(currentRow, 1)
        select_data_audiencia = self.table_audiencias.item(currentRow, 5)

        if (select_processo and select_data_audiencia):
            select_processo = select_processo.text()
            self.line_processo.setText(select_processo)

            date_to_set = self.transform_to_qdate(select_data_audiencia.text())
            self.date_data_audiencia.setDate(date_to_set)

        select_data_despacho = self.table_audiencias.item(currentRow, 6)
        if (select_data_despacho):
            date_to_set = self.transform_to_qdate(select_data_despacho.text())
            self.date_data_despacho.setDate(date_to_set)

    # get data functions
    def transform_to_qdate(self, date_str):
        date_list = date_str.split('/')
        return QDate(int(date_list[2]), int(date_list[1]), int(date_list[0]))

    def transform_to_qtime(self, time_str):
        time_list = time_str.split(':')
        return QTime(int(time_list[0]), int(time_list[1]))

    def get_ck_urgente(self):
        return self.ck_urgente.checkState()

    def get_cb_vara(self):
        return self.cb_vara.currentText()

    def get_cb_tipo(self):
        return self.cb_tipo.currentText()

    def get_line_processo(self):
        return self.line_processo.text()

    def get_time_horario(self):
        return self.time_horario.text()

    def get_date_data_audiencia(self):
        return self.date_data_audiencia.text()

    def get_date_data_despacho(self):
        return self.date_data_despacho.text()

    # button functions
    def on_click_filter_date(self):
        self.filtered_date = True
        self.set_table_audiencias_content(self.filtered_date,
                                          self.filtered_vara)

    def on_click_filter_vara(self):
        self.filtered_vara = True
        self.set_table_audiencias_content(self.filtered_date,
                                          self.filtered_vara)

    def on_click_remove_filters(self):
        self.filtered_date = False
        self.filtered_vara = False
        self.set_table_audiencias_content(self.filtered_date,
                                          self.filtered_vara)

    def on_click_insert_audiencia(self):
        self.db.insert_audiencia(vara=self.get_cb_vara(),
                                 processo=self.get_line_processo(),
                                 tipo=self.get_cb_tipo(),
                                 urgente=self.get_ck_urgente(),
                                 horario=self.get_time_horario(),
                                 data_audiencia=self.get_date_data_audiencia(),
                                 data_despacho=self.get_date_data_despacho())
        self.set_table_audiencias_content(self.filtered_date,
                                          self.filtered_vara)

    def on_click_delete_audiencia(self):
        currentRow = self.table_audiencias.currentRow()
        drop_processo = self.table_audiencias.item(currentRow, 1)
        drop_data_audiencia = self.table_audiencias.item(currentRow, 5)

        if (drop_processo and drop_data_audiencia):
            drop_processo = drop_processo.text()
            drop_data_audiencia = drop_data_audiencia.text()
            self.db.delete_audiencia(drop_processo, drop_data_audiencia)

            print('Audiência removida do banco de dados.')
            self.set_table_audiencias_content(self.filtered_date,
                                              self.filtered_vara)

    def on_click_update_audiencia(self):
        currentRow = self.table_audiencias.currentRow()
        update_processo = self.table_audiencias.item(currentRow, 1)
        update_data_audiencia = self.table_audiencias.item(currentRow, 5)

        if (update_processo and update_data_audiencia):
            update_processo = update_processo.text()
            update_data_audiencia = update_data_audiencia.text()
            self.db.update_audiencia(
                vara=self.get_cb_vara(),
                processo=update_processo,
                tipo=self.get_cb_tipo(),
                urgente=self.get_ck_urgente(),
                horario=self.get_time_horario(),
                data_audiencia=update_data_audiencia,
                data_despacho=self.get_date_data_despacho())
            self.set_table_audiencias_content(self.filtered_date,
                                              self.filtered_vara)

    def on_click_open_atividades(self):
        use_processo = self.get_line_processo()
        use_data_audiencia = self.get_date_data_audiencia()

        if (len(use_processo) != 13 or len(use_data_audiencia) != 10):
            print('Audiência selecionada é inválida.')
        else:
            self.windowAtividades = WindowAtividades(self.db, use_processo,
                                                     use_data_audiencia,
                                                     self.get_cb_vara())
            self.windowAtividades.show()
    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()
示例#7
0
class CalendarWindow(QMainWindow):
    def __init__(self, update=False, id=None, timeval=None, taskval=None):
        super(CalendarWindow, self).__init__()
        self.setGeometry(300, 300, 400, 400)
        if update:
            self.setWindowTitle("Edit Task")
        else:
            self.setWindowTitle("Add Task")
        self.reminder_data = {}
        self.commons = Commons()
        self._id = id
        self._timeval = timeval
        self._taskval = taskval
        self.init_ui()
        self.update = update

    def init_ui(self):
        self.init_calendar()
        self.init_lineedit()
        self.init_pushbuttons()
        self.init_timedit()
        self.show()

    def init_calendar(self):
        try:
            self.date = QDate()
            self.calendar = QCalendarWidget(self)
            self.calendar.adjustSize()
            self.calendar.setMinimumDate(self.date.currentDate())
        except Exception as err:
            print(err)

    def init_lineedit(self):
        self.text = QLineEdit(self)
        self.text.setMaxLength(250)
        self.text.setGeometry(5, 310, 40, 40)
        self.text.setFixedWidth(350)
        if not self.update:
            self._taskval = "Enter Task Description"
            self.text.setPlaceholderText(self._taskval)
        else:
            self.text.setText(self._taskval)

    def init_pushbuttons(self):
        self.OK = QtWidgets.QPushButton(self)
        self.OK.setText("OK")
        self.OK.move(195, 360)

        self.OK.clicked.connect(self.show_main)
        self.Cancel = QtWidgets.QPushButton(self)
        self.Cancel.setText("Cancel")
        self.Cancel.move(295, 360)
        self.Cancel.clicked.connect(self.close)

    def init_timedit(self):
        self.time = QTime()
        self.tedit = QTimeEdit(self)
        if not self.update:
            self._timeval = self.time.currentTime()
        else:
            self._timeval = QtCore.QTime.fromString(self._timeval, 'HH:mm:ss')
        self.tedit.setTime(self._timeval)
        self.tedit.move(5, 260)

    def show_main(self):
        try:
            selected_date = self.calendar.selectedDate()
            print(self.calendar.selectedDate())
            selected_time = self.tedit.time()
            print(selected_time.toString())
            print(self.text.text())
            self.reminder_data['Selected_Date'] = selected_date.toString()
            self.reminder_data['Selected_Time'] = selected_time.toString()
            self.reminder_data['Task_Description'] = self.text.text()
            print("From Calendar: ", self.reminder_data)
            if self.update:
                self.commons.prepare_json(self.reminder_data, self._id)
            else:
                self.commons.prepare_json(self.reminder_data)
            self.close()

        except Exception as err:
            print(err)