программа не отвечает pyqt5
при вводе правильных данных и нажатии кнопки ok программа не отвечает
Первый скрипт:
from PyQt5 import QtWidgets, QtCore, QtGui
from PyQt5.QtWidgets import QDialog
from PyQt5.QtWidgets import QApplication, QTableWidgetItem
from PyQt5.QtCore import QTimer, QTime
from interface import *
import sys
import sqlite3
from datetime import datetime
from playsound import playsound
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(544, 447)
Dialog.setStyleSheet("background-color: #22222e;")
self.tabWidget = QtWidgets.QTabWidget(Dialog)
self.tabWidget.setGeometry(QtCore.QRect(0, 10, 551, 441))
self.tabWidget.setObjectName("tabWidget")
self.alarmClockTab = QtWidgets.QWidget()
self.alarmClockTab.setObjectName("alarmClockTab")
self.deleteButton = QtWidgets.QPushButton(self.alarmClockTab)
self.deleteButton.setGeometry(QtCore.QRect(490, 360, 41, 41))
font = QtGui.QFont()
font.setFamily("MS Shell Dlg 2")
font.setBold(False)
font.setWeight(50)
self.deleteButton.setFont(font)
self.deleteButton.setStyleSheet("background-color: #fb5b5d;\n"
"border-radius: 10px;\n"
"color: white;")
self.deleteButton.setObjectName("deleteButton")
self.addButton = QtWidgets.QPushButton(self.alarmClockTab)
self.addButton.setGeometry(QtCore.QRect(440, 360, 41, 41))
font = QtGui.QFont()
font.setFamily("MS Shell Dlg 2")
font.setBold(False)
font.setWeight(50)
self.addButton.setFont(font)
self.addButton.setStyleSheet("background-color: #fb5b5d;\n"
"border-radius: 10px;\n"
"color: white;")
self.addButton.setObjectName("addButton")
self.tableWidget = QtWidgets.QTableWidget(self.alarmClockTab)
self.tableWidget.setGeometry(QtCore.QRect(10, 10, 521, 341))
self.tableWidget.setStyleSheet("color: white;")
self.tableWidget.setObjectName("tableWidget")
self.tableWidget.setColumnCount(0)
self.tableWidget.setRowCount(0)
self.tabWidget.addTab(self.alarmClockTab, "")
self.watchTab = QtWidgets.QWidget()
self.watchTab.setObjectName("watchTab")
self.timeLabel = QtWidgets.QLabel(self.watchTab)
self.timeLabel.setGeometry(QtCore.QRect(170, 110, 190, 57))
font = QtGui.QFont()
font.setPointSize(28)
self.timeLabel.setFont(font)
self.timeLabel.setStyleSheet("color: #fb5b5d;")
self.timeLabel.setObjectName("timeLabel")
self.tabWidget.addTab(self.watchTab, "")
self.timerTab = QtWidgets.QWidget()
self.timerTab.setObjectName("timerTab")
self.timerlabel = QtWidgets.QLabel(self.timerTab)
self.timerlabel.setGeometry(QtCore.QRect(170, 110, 190, 57))
font = QtGui.QFont()
font.setPointSize(28)
self.timerlabel.setFont(font)
self.timerlabel.setStyleSheet("color: #fb5b5d;")
self.timerlabel.setObjectName("timerlabel")
self.timerStartButton = QtWidgets.QPushButton(self.timerTab)
self.timerStartButton.setGeometry(QtCore.QRect(170, 240, 191, 41))
self.timerStartButton.setStyleSheet("background-color: #fb5b5d;\n"
"border-radius: 10px;\n"
"color: white;")
self.timerStartButton.setObjectName("timerStartButton")
self.tabWidget.addTab(self.timerTab, "")
self.stopWatchTab = QtWidgets.QWidget()
self.stopWatchTab.setObjectName("stopWatchTab")
self.stopWatchLabel = QtWidgets.QLabel(self.stopWatchTab)
self.stopWatchLabel.setGeometry(QtCore.QRect(170, 110, 190, 57))
font = QtGui.QFont()
font.setPointSize(28)
self.stopWatchLabel.setFont(font)
self.stopWatchLabel.setStyleSheet("color: #fb5b5d;")
self.stopWatchLabel.setObjectName("stopWatchLabel")
self.stopWatchStartButton = QtWidgets.QPushButton(self.stopWatchTab)
self.stopWatchStartButton.setGeometry(QtCore.QRect(170, 240, 191, 41))
self.stopWatchStartButton.setStyleSheet("background-color: #fb5b5d;\n"
"border-radius: 10px;\n"
"color: white;")
self.stopWatchStartButton.setObjectName("stopWatchStartButton")
self.tabWidget.addTab(self.stopWatchTab, "")
self.retranslateUi(Dialog)
self.tabWidget.setCurrentIndex(0)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
self.deleteButton.setText(_translate("Dialog", "-"))
self.addButton.setText(_translate("Dialog", "+"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.alarmClockTab), _translate("Dialog", "Будильник"))
self.timeLabel.setText(_translate("Dialog", "12:34:12"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.watchTab), _translate("Dialog", "Часы"))
self.timerlabel.setText(_translate("Dialog", "00:00:00"))
self.timerStartButton.setText(_translate("Dialog", "Запустить таймер"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.timerTab), _translate("Dialog", "Таймер"))
self.stopWatchLabel.setText(_translate("Dialog", "00:00:00"))
self.stopWatchStartButton.setText(_translate("Dialog", "Запустить секундомер"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.stopWatchTab), _translate("Dialog", "Секундомер"))
class Ui_createAlarmClock(QDialog):
def __init__(self):
super().__init__()
self.cancel = QtWidgets.QPushButton("Cancel", self)
self.cancel.setGeometry(350, 140, 93, 28)
font = QtGui.QFont()
font.setFamily("JetBrains Mono")
font.setBold(False)
font.setWeight(50)
self.cancel.setFont(font)
self.ok = QtWidgets.QPushButton("Ok", self)
self.ok.setGeometry(250, 140, 93, 28)
font = QtGui.QFont()
font.setFamily("JetBrains Mono")
self.ok.setFont(font)
self.nameEdit = QtWidgets.QLineEdit(self)
self.nameEdit.setGeometry(180, 10, 261, 22)
self.nameLabel = QtWidgets.QLabel("Название", self)
self.nameLabel.setGeometry(10, 10, 111, 21)
font = QtGui.QFont()
font.setFamily("JetBrains Mono")
font.setPointSize(12)
self.nameLabel.setFont(font)
self.timeLabel = QtWidgets.QLabel("Время", self)
self.timeLabel.setGeometry(10, 40, 111, 31)
font = QtGui.QFont()
font.setFamily("JetBrains Mono")
font.setPointSize(12)
self.timeLabel.setFont(font)
self.timeEdit = QtWidgets.QLineEdit(self)
self.timeEdit.setGeometry(180, 50, 261, 22)
self.melodyLabel = QtWidgets.QLabel("Мелодия", self)
self.melodyLabel.setGeometry(10, 80, 111, 31)
font = QtGui.QFont()
font.setFamily("JetBrains Mono")
font.setPointSize(12)
self.melodyLabel.setFont(font)
self.comboBox = QtWidgets.QComboBox(self)
self.comboBox.setGeometry(180, 90, 261, 22)
self.errorLabel = QtWidgets.QLabel("", self)
self.errorLabel.setGeometry(10, 140, 221, 21)
font = QtGui.QFont()
font.setFamily("JetBrains Mono")
font.setPointSize(10)
self.errorLabel.setFont(font)
Второй скрипт:
from PyQt5.QtWidgets import QApplication, QTableWidgetItem
from PyQt5.QtCore import QTimer, QTime
from interface import *
import sys
import sqlite3
from datetime import datetime
from playsound import playsound
class createAlarmClock(Ui_createAlarmClock):
def __init__(self):
super().__init__()
self.resize(400, 178)
self.setWindowTitle("Создание будильника")
self.con = sqlite3.connect('Базы данных\\alarmClocks.db')
self.params = {}
self.select_melodies()
self.ok.clicked.connect(self.addRow)
self.cancel.clicked.connect(self.cancel_func)
self.show()
self.exec()
# Добавляет мелодии в comboBox
def select_melodies(self):
req = """SELECT id, ringtone FROM Melodies"""
cur = self.con.cursor()
for value, key in cur.execute(req).fetchall():
self.params[key] = value
self.comboBox.addItems(list(self.params.keys()))
def cancel_func(self):
self.close()
# проверяет правильно ли введены данные
def valid_data(self, times):
return self.timeEdit.text() not in times and self.nameEdit.text().strip() != '' and \
len(self.timeEdit.text()) == 8 and int(self.timeEdit.text()[0:2]) <= 23 and \
int(self.timeEdit.text()[3:5]) <= 59 and int(self.timeEdit.text()[6:8]) <= 59
def play_alarm_clock(self, name, alarm_time, id_melody):
alarm_hour = int(alarm_time[0:2])
alarm_min = int(alarm_time[3:5])
alarm_sec = int(alarm_time[6:8])
con = sqlite3.connect('Базы данных\\alarmClocks.db')
cur = con.cursor()
melody = cur.execute(f"SELECT ringtone_directory from Melodies WHERE id = {id_melody}").fetchone()
while True:
now = datetime.now()
current_hour = now.hour
current_min = now.min
current_sec = now.second
if alarm_hour == current_hour and alarm_min == current_min and alarm_sec == current_sec:
playsound(melody)
break
# Добавляет будильник в таблицу
def addRow(self):
cur = self.con.cursor()
times = cur.execute("SELECT time FROM alarmClocks").fetchall()
times = [i[0] for i in times]
if not self.valid_data(times):
self.errorLabel.setText("Неверно введены данные")
self.nameEdit.setText('')
self.timeEdit.setText('')
else:
req = f"""INSERT INTO alarmClocks(name, time, melody_id) VALUES(?, ?, ?)"""
cur.execute(req, (self.nameEdit.text(),
self.timeEdit.text(),
self.params.get(self.comboBox.currentText())))
self.con.commit()
self.loadTable()
self.close()
self.play_alarm_clock(self.nameEdit.text(), self.timeEdit.text(),
self.params.get(self.comboBox.currentText()))
self.con.close()
# Загружает таблицу
def loadTable(self):
cur = self.con.cursor()
result = cur.execute('SELECT * FROM alarmClocks').fetchall()
ex.tableWidget.setRowCount(len(result))
ex.tableWidget.setColumnCount(len(result[0]))
for i, elem in enumerate(result):
for j, val in enumerate(elem):
ex.tableWidget.setItem(i, j, QTableWidgetItem(str(val)))