При попытке подключить модуль keyboard к Pyqt5 закрывается программа
При нажатие кнопки Enter программа должна имитировать нажатие кнопки (pushButton), а приложение просто закрывается.
Не могу понять проблему, помогите, пожалуйста.
main
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QMessageBox
from design import Ui_MainWindow as Design
import keyboard
class Test(QtWidgets.QMainWindow, Design):
def __init__(self):
super().__init__()
self.setupUi(self)
self.pushButton.clicked.connect(self.start)
keyboard.on_press_key("enter", self.start)
def start(self, key):
import random
try:
if int(self.textEdit.toPlainText()) <= int(self.balance.text()):
self.ur_label.setText(str(random.randint(1, 10)))
self.enemy_label.setText(str(random.randint(1, 10)))
if int(self.ur_label.text()) > int(self.enemy_label.text()):
self.balance.setText(str(int(self.balance.text()) + int(self.textEdit.toPlainText())))
else:
self.balance.setText(str(int(self.balance.text()) - int(self.textEdit.toPlainText())))
self.textEdit.setText(self.textEdit.toPlainText().strip())
else:
self.textEdit.setText("У ВАС НЕ ХВАТАЕТ ДЕНЕГ")
except ValueError:
error = QMessageBox()
error.setWindowTitle(" ")
error.setText("Ошибка")
error.setIcon(QMessageBox.Warning)
error.setStandardButtons(QMessageBox.Ok)
error.setDefaultButton(QMessageBox.Ok)
error.setInformativeText("Нажми на кнопку")
error.setDetailedText("Вы ввели символ который не является каким либо числом")
self.textEdit.setText("")
error.exec_()
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
test_app = Test()
test_app.show()
sys.exit(app.exec_())
design
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 600)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setStyleSheet("background-color: rgb(101, 67, 33)")
self.centralwidget.setObjectName("centralwidget")
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(220, 10, 240, 50))
font = QtGui.QFont()
font.setPointSize(40)
font.setBold(True)
font.setWeight(75)
self.label.setFont(font)
self.label.setStyleSheet("color: rgb(255, 255, 255);\n"
"")
self.label.setObjectName("label")
self.pushButton = QtWidgets.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(350, 550, 75, 23))
self.pushButton.setStyleSheet("\n"
"background-color: rgb(0, 0, 0);\n"
"color: rgb(255, 255, 255);\n"
"")
self.pushButton.setObjectName("pushButton")
self.textEdit = QtWidgets.QTextEdit(self.centralwidget)
self.textEdit.setGeometry(QtCore.QRect(270, 490, 241, 51))
self.textEdit.setStyleSheet("background-color: rgb(255, 255, 255);\n"
"color: rgb(0, 0, 0);")
self.textEdit.setObjectName("textEdit")
self.ur_label = QtWidgets.QLabel(self.centralwidget)
self.ur_label.setGeometry(QtCore.QRect(160, 200, 150, 160))
font = QtGui.QFont()
font.setPointSize(40)
font.setBold(True)
font.setWeight(75)
self.ur_label.setFont(font)
self.ur_label.setStyleSheet("color: rgb(255, 255, 255);")
self.ur_label.setText("")
self.ur_label.setObjectName("ur_label")
self.enemy_label = QtWidgets.QLabel(self.centralwidget)
self.enemy_label.setGeometry(QtCore.QRect(560, 200, 150, 160))
font = QtGui.QFont()
font.setPointSize(40)
font.setBold(True)
font.setWeight(75)
self.enemy_label.setFont(font)
self.enemy_label.setStyleSheet("color: rgb(255, 255, 255);")
self.enemy_label.setText("")
self.enemy_label.setObjectName("enemy_label")
self.balance = QtWidgets.QLabel(self.centralwidget)
self.balance.setGeometry(QtCore.QRect(470, 10, 240, 50))
font = QtGui.QFont()
font.setPointSize(40)
font.setBold(True)
font.setWeight(75)
self.balance.setFont(font)
self.balance.setStyleSheet("color: rgb(255, 255, 255);")
self.balance.setObjectName("balance")
MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "Казино"))
self.label.setText(_translate("MainWindow", "БАЛАНС: "))
self.pushButton.setText(_translate("MainWindow", "Поставить"))
self.balance.setText(_translate("MainWindow", "100"))
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
QSpinBox предназначен для обработки целых чисел и дискретных наборов значений.
Больше https://doc.qt.io/qt-5/qspinbox.html#details
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QMessageBox
#import keyboard
import random
#from design import Ui_MainWindow as Design
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 600)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setStyleSheet("background-color: rgb(101, 67, 33)")
self.centralwidget.setObjectName("centralwidget")
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(220, 10, 240, 50))
font = QtGui.QFont()
font.setPointSize(40)
font.setBold(True)
font.setWeight(75)
self.label.setFont(font)
self.label.setStyleSheet("color: rgb(255, 255, 255);\n"
"")
self.label.setObjectName("label")
self.pushButton = QtWidgets.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(350, 550, 75, 23))
self.pushButton.setStyleSheet("\n"
"background-color: rgb(0, 0, 0);\n"
"color: rgb(255, 255, 255);\n"
"")
self.pushButton.setObjectName("pushButton")
# !!! QSpinBox
# self.textEdit = QtWidgets.QTextEdit(self.centralwidget)
self.textEdit = QtWidgets.QSpinBox(self.centralwidget)
self.textEdit.setGeometry(QtCore.QRect(270, 490, 241, 51))
self.textEdit.setStyleSheet("background-color: rgb(255, 255, 255);\n"
"color: rgb(0, 0, 0);")
self.textEdit.setObjectName("textEdit")
self.ur_label = QtWidgets.QLabel(self.centralwidget)
self.ur_label.setGeometry(QtCore.QRect(160, 200, 150, 160))
font = QtGui.QFont()
font.setPointSize(40)
font.setBold(True)
font.setWeight(75)
self.ur_label.setFont(font)
self.ur_label.setStyleSheet("color: rgb(255, 255, 255);")
self.ur_label.setText("")
self.ur_label.setObjectName("ur_label")
self.enemy_label = QtWidgets.QLabel(self.centralwidget)
self.enemy_label.setGeometry(QtCore.QRect(560, 200, 150, 160))
font = QtGui.QFont()
font.setPointSize(40)
font.setBold(True)
font.setWeight(75)
self.enemy_label.setFont(font)
self.enemy_label.setStyleSheet("color: rgb(255, 255, 255);")
self.enemy_label.setText("")
self.enemy_label.setObjectName("enemy_label")
self.balance = QtWidgets.QLabel(self.centralwidget)
self.balance.setGeometry(QtCore.QRect(470, 10, 240, 50))
font = QtGui.QFont()
font.setPointSize(40)
font.setBold(True)
font.setWeight(75)
self.balance.setFont(font)
self.balance.setStyleSheet("color: rgb(255, 255, 255);")
self.balance.setObjectName("balance")
MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "Казино"))
self.label.setText(_translate("MainWindow", "БАЛАНС: "))
self.pushButton.setText(_translate("MainWindow", "Поставить"))
self.balance.setText(_translate("MainWindow", "100"))
class Test(QtWidgets.QMainWindow, Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
self.pushButton.clicked.connect(self.start)
# keyboard.on_press_key("enter", self.start)
def start(self): #, key):
money = self.textEdit.value()
if not money:
return
balance = int(self.balance.text())
if money <= balance:
self.ur_label.setText(str(random.randint(1, 10)))
self.enemy_label.setText(str(random.randint(1, 10)))
if int(self.ur_label.text()) > int(self.enemy_label.text()):
self.balance.setNum(balance + money)
else:
self.balance.setNum(balance - money)
# self.textEdit.setText(self.textEdit.toPlainText().strip())
self.textEdit.setValue(0)
else:
# self.textEdit.setText("У ВАС НЕ ХВАТАЕТ ДЕНЕГ")
if not balance:
msg = QMessageBox.information(self, 'Внимание', 'Ваш баланс ZERO.')
return
msg = QMessageBox.information(self, 'Внимание', 'У ВАС НЕ ХВАТАЕТ ДЕНЕГ.')
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
test_app = Test()
test_app.show()
sys.exit(app.exec_())
