class WidgetAppendNewTask(QWidget):
    def __init__(self):
        super().__init__()
        self.setFixedSize(800, 600)
        self.move(500, 300)
        self.setWindowTitle('Добавление новой задачи')

        self.font1 = QFont()
        self.font1.setPointSize(16)

        self.lbl1 = QLabel(self)
        self.lbl1.move(50, 50)
        self.lbl1.resize(350, 50)
        self.lbl1.setFont(self.font1)
        self.lbl1.setText('Название задачи')

        self.line_name = QLineEdit(self)
        self.line_name.move(400, 50)
        self.line_name.resize(350, 50)
        self.line_name.setFont(self.font1)

        self.lbl2 = QLabel(self)
        self.lbl2.move(50, 125)
        self.lbl2.resize(350, 50)
        self.lbl2.setFont(self.font1)
        self.lbl2.setText('Подробнее')

        self.text_of_task = QPlainTextEdit(self)
        self.text_of_task.move(400, 125)
        self.text_of_task.resize(350, 150)
        self.text_of_task.setFont(self.font1)

        self.lbl3 = QLabel(self)
        self.lbl3.move(50, 300)
        self.lbl3.resize(350, 50)
        self.lbl3.setText('Укажите дату и время\n' 'начала выполнения задачи')
        self.lbl3.setFont(self.font1)

        self.start_check = QCheckBox(self)
        self.start_check.move(400, 300)
        self.start_check.resize(20, 50)
        self.start_check.setFont(self.font1)
        self.start_check.clicked.connect(self.start_check_triggered)

        self.dt_start = QDateTimeEdit(self)
        self.dt_start.move(430, 300)
        self.dt_start.resize(320, 50)
        self.dt_start.setFont(self.font1)
        self.dt_start.setDateTime(datetime.datetime.now())
        self.dt_start.setDisabled(True)

        self.lbl4 = QLabel(self)
        self.lbl4.move(50, 400)
        self.lbl4.resize(350, 50)
        self.lbl4.setText('Установите приоритет задачи')
        self.lbl4.setFont(self.font1)

        self.prioritet = QComboBox(self)
        self.prioritet.move(400, 400)
        self.prioritet.resize(350, 50)
        self.prioritet.setFont(self.font1)
        self.prioritet.addItem('Приоритет в порядке очереди')
        self.prioritet.addItem('Средний приоритет')
        self.prioritet.addItem('Высокий приоритет')
        self.prioritet.addItem('Наивысший приоритет')

        self.btn_back = QPushButton(self)
        self.btn_back.move(0, 0)
        self.btn_back.resize(50, 25)
        self.btn_back.setFont(self.font1)
        self.btn_back.setText('<-')
        self.btn_back.clicked.connect(self.back_pushed)

        self.btn_ready = QPushButton(self)
        self.btn_ready.move(250, 500)
        self.btn_ready.resize(300, 50)
        self.btn_ready.setFont(self.font1)
        self.btn_ready.setText('Сохранить задачу')
        self.btn_ready.clicked.connect(self.ready_pushed)

        self.info_lbl = QLabel(self)
        self.info_lbl.move(150, 0)
        self.info_lbl.setFont(self.font1)
        self.info_lbl.setText('')
        self.info_lbl.setStyleSheet('color: red')

    def back_pushed(self):
        if self.line_name.text() == '':
            self.close()
        else:
            self.info_lbl.setText(
                'Очистите поле "Название задачи" или сохраните задачу')
            self.info_lbl.resize(555, 25)

    def mousePressEvent(self, event):
        if event.button() == 8 and self.line_name.text() == '':
            self.close()
        else:
            self.info_lbl.setText(
                'Очистите поле "Название задачи" или сохраните задачу')
            self.info_lbl.resize(555, 25)

    def start_check_triggered(self):
        if self.start_check.isChecked():
            self.dt_start.setDisabled(False)
        else:
            self.dt_start.setDisabled(True)

    def ready_pushed(self):
        file = open('tasks.csv', encoding='UTF-8', mode='a', newline='')
        writer = csv.writer(file, delimiter=';', quoting=csv.QUOTE_MINIMAL)
        name = self.line_name.text()
        more = self.text_of_task.toPlainText()
        prioritet = self.prioritet.currentText()
        if self.start_check.isChecked():
            start = self.dt_start.dateTime()
        else:
            start = 'None'
        dt = str(start.toPyDateTime())
        dt = dt[:dt.index('.')]
        dt = dt[:-3]

        if prioritet == 'Приоритет в порядке очереди':
            prioritet = 1
        elif prioritet == 'Средний приоритет':
            prioritet = 2
        elif prioritet == 'Высокий приоритет':
            prioritet = 3
        else:
            prioritet = 4

        row = [
            str(randint(10000, 99999)), name, more, dt,
            str(prioritet), 'NotResolved'
        ]
        writer.writerow(row)
        self.info_lbl.setText('Задача успешно сохранена')
        self.info_lbl.resize(555, 25)
        self.close()
Esempio n. 2
0
class Upload(QWidget):
  def __init__(self):
    super(Upload, self).__init__()
    self.switch = True
    self.initUI()

  def initUI(self):
    #源文件选择按钮和选择编辑框
    self.source_btn = QPushButton('源文件', self)
    self.source_btn.move(30, 30)
    self.source_btn.resize(80,30)
    self.source_btn.clicked.connect(self.select_source)
    self.source_le = QLineEdit(self)
    self.source_le.move(120, 30)
    self.source_le.resize(250,30)

    #抖音视频分类输入框和提示
    self.catLabel = QLabel(self)
    self.catLabel.move(30, 75)
    self.catLabel.resize(100,30)
    self.catLabel.setText("抖音视频分类:")
    self.combo_from = QComboBox(self)	
    self.cat_form = '体育'
    self.combo_from.addItems(['体育', '音乐', '搞笑', '影视', '娱乐', '舞蹈', '情感', '知识', '动植物', '剧情', '游戏', '才艺', '时尚', '美食', '文化教育', '动漫二次元', '亲子', '旅行', '汽车', '科技', '政务', '创意', '校园', '日常生活', '新闻资讯', '三农', '其他'])
    self.combo_from.activated[str].connect(self.onLanFromActivated)  
    self.combo_from.move(120, 75)
    self.combo_from.resize(250, 30)

     #发布时间间隔输入框和提示
    self.gapLabel = QLabel(self)
    self.gapLabel.move(30, 120)
    self.gapLabel.resize(100,30)
    self.gapLabel.setText("发布时间间隔:")
    self.gap_le = QLineEdit('1', self)
    self.gap_le.move(120,120)
    self.gap_le.resize(250, 30)

    # 时间选择器
    self.dateTimeLabel = QLabel(self)
    self.dateTimeLabel.move(30, 165)
    self.dateTimeLabel.resize(100,30)
    self.dateTimeLabel.setText("发布开始时间:")
    self.dateTime_le = QDateTimeEdit(QDateTime.currentDateTime(), self)
    self.dateTime_le.setDisplayFormat("yyyy-MM-dd HH:mm")
    self.dateTime_le.move(120, 165)
    self.dateTime_le.resize(250, 30)

    #上传按钮
    self.save_btn = QPushButton('开始上传',self)
    self.save_btn.move(200, 220)
    self.save_btn.resize(140, 30)
    self.save_btn.clicked.connect(self.kick)

    #用户提示区
    self.result_le = QLabel('视频分类与抖音后台保持一致', self)
    self.result_le.move(30, 270)
    self.result_le.resize(340, 30)
    self.result_le.setStyleSheet('color: blue;')

    #整体界面设置
    self.resize(400, 400)
    self.center()
    self.setWindowTitle('抖音视频自动化上传')#设置界面标题名
    self.show()
  
  # 窗口居中函数
  def center(self):
    screen = QtWidgets.QDesktopWidget().screenGeometry()#获取屏幕分辨率
    size = self.geometry()#获取窗口尺寸
    self.move(int((screen.width() - size.width()) / 2), int((screen.height() - size.height()) / 2))#利用move函数窗口居中

  # 打开的视频文件名称
  def select_source(self):
    dir_path = QFileDialog.getExistingDirectory(self, "请选择文件夹路径", "C:/")
    self.source_le.setText(str(dir_path))

  def set_label_func(self, text):
    self.result_le.setText(text)
  
  def onLanFromActivated(self, text):
    self.cat_form = text

  def switch_func(self, bools):
    self.switch = bools

  def kick(self):
    source = self.source_le.text().strip()#源文件夹路径
    category = self.cat_form.strip()#视频分类
    gap = self.gap_le.text().strip()#时间间隔
    # start_time = str(self.dateTime_le.text())#定时发布开始时间
    # start_time = time.mktime(time.strptime(self.dateTime_le.text(), '%Y-%m-%d %H:%M'))#定时发布开始时间
    start_time = datetime.datetime.strptime(self.dateTime_le.text(),"%Y-%m-%d %H:%M")#定时发布开始时间
    if self.switch and source != '' and category != '' and gap != '':
      self.switch = False
      self.set_label_func('请耐心等待,正在打开浏览器!')
      self.my_thread = MyThread(source, category, gap, start_time, self.set_label_func)#实例化线程对象
      self.my_thread.start()#启动线程
      self.my_thread.my_signal.connect(self.switch_func)