При попытке подключить модуль 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_())

введите сюда описание изображения

→ Ссылка