class ReleasePetDialog(QDialog): def __init__(self, UserId): super(ReleasePetDialog, self).__init__() self.UserId = UserId self.filePath = "" self.type = "" self.froml = "" self.fromt = "" self.stayl = "" self.resize(800, 500) self.setWindowTitle('myPet——发布招领') self.setWindowIcon(QIcon('./images/icon.png')) self.initUI() def initUI(self): self.plabel = QLabel(self) self.plabel.setFixedSize(370, 370) self.plabel.move(20, 20) self.hbox11 = QHBoxLayout() self.hbox11.addStretch(1) self.hbox11.addWidget(self.plabel) self.hbox11.addStretch(1) self.obtn = QPushButton(self) self.obtn.setText("打开本地图片") self.obtn.setFont(QFont("苏新诗柳楷繁", 15)) self.obtn.resize(200, 50) self.obtn.move(560, 30) self.obtn.clicked.connect(self.openimage) self.obtn.setFixedSize(180, 50) self.hbox12 = QHBoxLayout() self.hbox12.addStretch(1) self.hbox12.addWidget(self.obtn) self.hbox12.addStretch(1) self.vbox1 = QVBoxLayout() self.vbox1.addLayout(self.hbox11) self.vbox1.addLayout(self.hbox12) self.typelabel = QLabel() self.typelabel.setText("动物种类") self.typelabel.setFont(QFont("苏新诗柳楷繁", 13)) self.typeedit = QLineEdit() self.typeedit.setFixedSize(180, 30) self.typeedit.setFont(QFont("苏新诗柳楷繁", 13)) self.hbox21 = QHBoxLayout() self.hbox21.addStretch(1) self.hbox21.addWidget(self.typelabel) self.hbox21.addStretch(1) self.hbox21.addWidget(self.typeedit) self.hbox21.addStretch(1) self.fromllabel = QLabel() self.fromllabel.setText("出现地点") self.fromllabel.setFont(QFont("苏新诗柳楷繁", 13)) self.fromledit = QLineEdit() self.fromledit.setFixedSize(180, 30) self.fromledit.setFont(QFont("苏新诗柳楷繁", 13)) self.hbox22 = QHBoxLayout() self.hbox22.addStretch(1) self.hbox22.addWidget(self.fromllabel) self.hbox22.addStretch(1) self.hbox22.addWidget(self.fromledit) self.hbox22.addStretch(1) self.fromtlabel = QLabel() self.fromtlabel.setText("出现时间") self.fromtlabel.setFont(QFont("苏新诗柳楷繁", 13)) self.fromtedit = QDateTimeEdit() self.fromtedit.setFixedSize(180, 30) self.fromtedit.setFont(QFont("苏新诗柳楷繁", 13)) self.hbox23 = QHBoxLayout() self.hbox23.addStretch(1) self.hbox23.addWidget(self.fromtlabel) self.hbox23.addStretch(1) self.hbox23.addWidget(self.fromtedit) self.hbox23.addStretch(1) self.stayllabel = QLabel() self.stayllabel.setText("收留地点") self.stayllabel.setFont(QFont("苏新诗柳楷繁", 13)) self.stayledit = QLineEdit() self.stayledit.setFixedSize(180, 30) self.stayledit.setFont(QFont("苏新诗柳楷繁", 13)) self.hbox24 = QHBoxLayout() self.hbox24.addStretch(1) self.hbox24.addWidget(self.stayllabel) self.hbox24.addStretch(1) self.hbox24.addWidget(self.stayledit) self.hbox24.addStretch(1) self.rbtn = QPushButton(self) self.rbtn.setText("发布招领") self.rbtn.setFont(QFont("苏新诗柳楷繁", 15)) self.rbtn.resize(200, 50) self.rbtn.move(560, 30) self.rbtn.setFixedSize(180, 50) self.hbox25 = QHBoxLayout() self.hbox25.addStretch(1) self.hbox25.addWidget(self.rbtn) self.hbox25.addStretch(1) self.vbox2 = QVBoxLayout() self.vbox2.addLayout(self.hbox21) self.vbox2.addLayout(self.hbox22) self.vbox2.addLayout(self.hbox23) self.vbox2.addLayout(self.hbox24) self.vbox2.addLayout(self.hbox25) self.hbox = QHBoxLayout() self.hbox.addLayout(self.vbox1) self.hbox.addLayout(self.vbox2) self.setLayout(self.hbox) self.type = self.typeedit.text() self.rbtn.clicked.connect(self.rbtnClicked) def openimage(self): self.filePath, imgType = QFileDialog.getOpenFileName( self, "打开本地图片", "", "*.jpg;;*.png;;All Files(*)") self.jpg = QPixmap(self.filePath).scaled(self.plabel.width(), self.plabel.height()) self.plabel.setPixmap(self.jpg) def rbtnClicked(self): self.type = self.typeedit.text() self.froml = self.fromledit.text() self.fromt = self.fromtedit.text() self.stayl = self.stayledit.text() self.petid = 'p' + str(time.strftime("%g%m%d")) + str( random.randint(0, 9999)).zfill(4) db = QSqlDatabase.addDatabase("QSQLITE") db.setDatabaseName('./db/myPet.db') db.open() query = QSqlQuery() sql = "select * from user where UserId = '%s' and UserAuthority = '黑名单'" % ( self.UserId) query.exec_(sql) if (query.next()): print( QMessageBox.warning(self, "警告", "你是黑名单用户,无法发布宠物!", QMessageBox.Yes, QMessageBox.Yes)) return if (self.type == "" or self.filePath == "" or self.froml == "" or self.froml == "" or self.fromt == ""): print( QMessageBox.warning(self, "警告", "图片未插入或信息不完整!", QMessageBox.Yes, QMessageBox.Yes)) return sql = "select * from pet where PetId = '%s'" % (self.petid) query.exec_(sql) if (query.next()): # 宠物编号已存在 print( QMessageBox.warning(self, "警告", "系统错误,请重新提交", QMessageBox.Yes, QMessageBox.Yes)) return else: sql = "insert into pet values ('%s','待领养','%s','%s')" % ( self.petid, self.UserId, self.filePath) query.exec_(sql) db.commit() sql = "insert into pet_detail values ('%s','%s','%s','%s','%s')" % ( self.petid, self.type, self.froml, self.fromt, self.stayl) query.exec_(sql) db.commit() db.close() print( QMessageBox.information(self, "提醒", "您已成功发布领养信息!", QMessageBox.Yes, QMessageBox.Yes)) self.stayledit.setText("") self.typeedit.setText("") self.fromledit.setText("") self.filePath = "" self.jpg = QPixmap(self.filePath).scaled(self.plabel.width(), self.plabel.height()) self.plabel.setPixmap(self.jpg)
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()