Python Sqlite3- Сбой программы после вызова execute- ВЫБЕРИТЕ запрос

#python-3.x #sqlite #pyqt #pyqt5 #qt-designer

#python-3.x #sqlite #pyqt #pyqt5 #qt-designer

Вопрос:

Запрос Select не выполняется в python3-sqlite3, вместо этого моя программа прерывается сразу после этого оператора. Мой код работает нормально, без ошибок, но всякий раз, когда я нажимаю на переключатель (в графическом интерфейсе), который вызывает функцию, содержащую приведенную выше инструкцию execute , она прерывается.

Я новичок в sqlite3 и даже python3, я работаю над своим первым проектом на python, который построен с использованием above 2 и Qt designer, после преобразования моего кода из qtdesigner я добавил необходимые коды, вот MyCricket.py-код:

 from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import (QApplication, QWidget, QLabel, QPushButton, QRadioButton, QFrame, QMessageBox)
from DialogBox2 import Ui_Dialog
from PyQt5.QtCore import pyqtSlot, QRect

class Ui_MainWindow(object):

    def setupUi(self,MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(730, 562)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(20, 30, 101, 21))  
        font = QtGui.QFont()
        font.setPointSize(9)
        self.label.setFont(font)
        self.label.setObjectName("label")     
        self.horizontalLayoutWidget = QtWidgets.QWidget(self.centralwidget)
        self.horizontalLayoutWidget.setGeometry(QtCore.QRect(20, 60, 681, 61))
        self.horizontalLayoutWidget.setObjectName("horizontalLayoutWidget")
        self.horizontalLayout = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget)
        self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.label_8 = QtWidgets.QLabel(self.horizontalLayoutWidget)
        font = QtGui.QFont()
        font.setFamily("Arial")
        font.setPointSize(9)
        font.setBold(True)
        font.setWeight(75)
        self.label_8.setFont(font)
        self.label_8.setObjectName("label_8")
        self.horizontalLayout.addWidget(self.label_8)
        self.l1 = QtWidgets.QLabel(self.horizontalLayoutWidget)
        font = QtGui.QFont()
        font.setFamily("Arial")
        font.setPointSize(10)
        font.setBold(True)
        font.setWeight(75)
        self.l1.setFont(font)
        self.l1.setObjectName("l1")
        self.horizontalLayout.addWidget(self.l1)
        self.label_9 = QtWidgets.QLabel(self.horizontalLayoutWidget)
        font = QtGui.QFont()
        font.setFamily("Arial")
        font.setPointSize(9)
        font.setBold(True)
        font.setWeight(75)
        self.label_9.setFont(font)
        self.label_9.setObjectName("label_9")
        self.horizontalLayout.addWidget(self.label_9)
        self.l2 = QtWidgets.QLabel(self.horizontalLayoutWidget)
        font = QtGui.QFont()
        font.setFamily("Arial")
        font.setPointSize(10)
        font.setBold(True)
        font.setWeight(75)
        self.l2.setFont(font)
        self.l2.setObjectName("l2")
        self.horizontalLayout.addWidget(self.l2)
        self.label_5 = QtWidgets.QLabel(self.horizontalLayoutWidget)
        font = QtGui.QFont()
        font.setFamily("Arial")
        font.setPointSize(9)
        font.setBold(True)
        font.setWeight(75)
        self.label_5.setFont(font)
        self.label_5.setObjectName("label_5")
        self.horizontalLayout.addWidget(self.label_5)
        self.l3 = QtWidgets.QLabel(self.horizontalLayoutWidget)
        font = QtGui.QFont()
        font.setFamily("Arial")
        font.setPointSize(10)
        font.setBold(True)
        font.setWeight(75)
        self.l3.setFont(font)
        self.l3.setObjectName("l3")
        self.horizontalLayout.addWidget(self.l3)
        self.label_3 = QtWidgets.QLabel(self.horizontalLayoutWidget)
        font = QtGui.QFont()
        font.setFamily("Arial")
        font.setPointSize(9)
        font.setBold(True)
        font.setWeight(75)
        self.label_3.setFont(font)
        self.label_3.setObjectName("label_3")
        self.horizontalLayout.addWidget(self.label_3)
        self.l4 = QtWidgets.QLabel(self.horizontalLayoutWidget)
        font = QtGui.QFont()
        font.setFamily("Arial")
        font.setPointSize(10)
        font.setBold(True)
        font.setWeight(75)
        self.l4.setFont(font)
        self.l4.setObjectName("l4")
        self.horizontalLayout.addWidget(self.l4)
        self.horizontalLayoutWidget_2 = QtWidgets.QWidget(self.centralwidget)
        self.horizontalLayoutWidget_2.setGeometry(QtCore.QRect(20, 130, 681, 51))
        self.horizontalLayoutWidget_2.setObjectName("horizontalLayoutWidget_2")
        self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget_2)
        self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.label_13 = QtWidgets.QLabel(self.horizontalLayoutWidget_2)
        font = QtGui.QFont()
        font.setFamily("Arial")
        font.setPointSize(8)
        font.setBold(True)
        font.setWeight(75)
        self.label_13.setFont(font)
        self.label_13.setObjectName("label_13")
        self.horizontalLayout_2.addWidget(self.label_13)
        self.l5 = QtWidgets.QLabel(self.horizontalLayoutWidget_2)
        font = QtGui.QFont()
        font.setFamily("Arial")
        font.setPointSize(9)
        font.setBold(True)
        font.setWeight(75)
        self.l5.setFont(font)
        self.l5.setObjectName("l5")
        self.horizontalLayout_2.addWidget(self.l5)
        spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_2.addItem(spacerItem)
        self.label_11 = QtWidgets.QLabel(self.horizontalLayoutWidget_2)
        font = QtGui.QFont()
        font.setFamily("Arial")
        font.setPointSize(8)
        font.setBold(True)
        font.setWeight(75)
        self.label_11.setFont(font)
        self.label_11.setObjectName("label_11")
        self.horizontalLayout_2.addWidget(self.label_11)
        self.l6 = QtWidgets.QLabel(self.horizontalLayoutWidget_2)
        font = QtGui.QFont()
        font.setFamily("Arial")
        font.setPointSize(9)
        font.setBold(True)
        font.setWeight(75)
        self.l6.setFont(font)
        self.l6.setObjectName("l6")
        self.horizontalLayout_2.addWidget(self.l6)
        spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_2.addItem(spacerItem1)
        self.listW1 = QtWidgets.QListWidget(self.centralwidget)
        self.listW1.setGeometry(QtCore.QRect(30, 230, 261, 271))
        font = QtGui.QFont()
        font.setFamily("Arial")
        font.setBold(True)
        font.setWeight(75)
        self.listW1.setFont(font)
        self.listW1.setObjectName("listW1")
        item = QtWidgets.QListWidgetItem()
        self.listW2 = QtWidgets.QListWidget(self.centralwidget)
        self.listW2.setGeometry(QtCore.QRect(350, 230, 281, 271))
        font = QtGui.QFont()
        font.setFamily("Arial")
        font.setBold(True)
        font.setWeight(75)
        self.listW2.setFont(font)
        self.listW2.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAsNeeded)
        self.listW2.setObjectName("listW2")       
        self.horizontalLayoutWidget_3 = QtWidgets.QWidget(self.centralwidget)
        self.horizontalLayoutWidget_3.setGeometry(QtCore.QRect(30, 190, 261, 51))
        self.horizontalLayoutWidget_3.setObjectName("horizontalLayoutWidget_3")
        self.horizontalLayout_3 = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget_3)
        self.horizontalLayout_3.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout_3.setObjectName("horizontalLayout_3")
        self.rb1 = QtWidgets.QRadioButton(self.horizontalLayoutWidget_3)
        self.rb1.setObjectName("rb1")
        self.horizontalLayout_3.addWidget(self.rb1)
        self.rb2 = QtWidgets.QRadioButton(self.horizontalLayoutWidget_3)
        self.rb2.setObjectName("rb2")
        self.horizontalLayout_3.addWidget(self.rb2)
        self.rb3 = QtWidgets.QRadioButton(self.horizontalLayoutWidget_3)
        self.rb3.setObjectName("rb3")
        self.horizontalLayout_3.addWidget(self.rb3)
        self.rb4 = QtWidgets.QRadioButton(self.horizontalLayoutWidget_3)
        self.rb4.setObjectName("rb4")
        self.horizontalLayout_3.addWidget(self.rb4)
        self.horizontalLayoutWidget_4 = QtWidgets.QWidget(self.centralwidget)
        self.horizontalLayoutWidget_4.setGeometry(QtCore.QRect(350, 190, 281, 51))
        self.horizontalLayoutWidget_4.setObjectName("horizontalLayoutWidget_4")
        self.horizontalLayout_4 = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget_4)
        self.horizontalLayout_4.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout_4.setObjectName("horizontalLayout_4")
        spacerItem2 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_4.addItem(spacerItem2)
        self.label_14 = QtWidgets.QLabel(self.horizontalLayoutWidget_4)
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.label_14.setFont(font)
        self.label_14.setObjectName("label_14")
        self.horizontalLayout_4.addWidget(self.label_14)
        self.l7 = QtWidgets.QLabel(self.horizontalLayoutWidget_4)
        self.l7.setObjectName("l7")
        self.horizontalLayout_4.addWidget(self.l7)
        spacerItem3 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_4.addItem(spacerItem3)
        self.label_16 = QtWidgets.QLabel(self.centralwidget)
        self.label_16.setGeometry(QtCore.QRect(310, 320, 21, 41))
        font = QtGui.QFont()
        font.setPointSize(16)
        font.setBold(False)
        font.setWeight(50)
        self.label_16.setFont(font)
        self.label_16.setObjectName("label_16")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 730, 21))
        self.menubar.setObjectName("menubar")
        self.menuManage_Teams = QtWidgets.QMenu(self.menubar)
        self.menuManage_Teams.setObjectName("menuManage_Teams")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)
        self.actionNEW_Team = QtWidgets.QAction(MainWindow)
        self.actionNEW_Team.setObjectName("actionNEW_Team")
        self.actionOPEN_Team = QtWidgets.QAction(MainWindow)
        self.actionOPEN_Team.setObjectName("actionOPEN_Team")
        self.actionSAVE_Team = QtWidgets.QAction(MainWindow)
        self.actionSAVE_Team.setObjectName("actionSAVE_Team")
        self.actionEVALUATE_Team = QtWidgets.QAction(MainWindow)
        self.actionEVALUATE_Team.setObjectName("actionEVALUATE_Team")


        #self.actionEVALUATE_Team.triggered.connect(self.OpenWindow)


        self.menuManage_Teams.addAction(self.actionNEW_Team)
        self.menuManage_Teams.addSeparator()
        self.menuManage_Teams.addAction(self.actionOPEN_Team)
        self.menuManage_Teams.addSeparator()
        self.menuManage_Teams.addAction(self.actionSAVE_Team)
        self.menuManage_Teams.addSeparator()
        self.menuManage_Teams.addAction(self.actionEVALUATE_Team)
        self.menubar.addAction(self.menuManage_Teams.menuAction())

        #self.listW1.itemDoubleClicked.connect(self.removelist1)
        #self.listW2.itemDoubleClicked.connect(self.removelist2)

        self.rb1.clicked.connect(self.fillList)
        self.rb2.clicked.connect(self.fillList)
        self.rb3.clicked.connect(self.fillList)
        self.rb4.clicked.connect(self.fillList)

        #self.menuManage_Teams.triggered[QtWidgets.QAction].connect(self.menu)

        self.bat=0
        self.bwl=0
        self.ar=0
        self.wk=0
        self.avl=1000
        self.used=0

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "Fantasy Cricket Game"))
        self.label.setText(_translate("MainWindow", "Your Selections"))
        self.label_8.setText(_translate("MainWindow", "Batsmen(BAT)"))
        self.l1.setText(_translate("MainWindow", "<html><head/><body><p><span style=" color:#00aa00;">##</span></p></body></html>"))
        self.label_9.setText(_translate("MainWindow", "Bowlers(BOW)"))
        self.l2.setText(_translate("MainWindow", "<html><head/><body><p><span style=" color:#00aa00;">##</span></p></body></html>"))
        self.label_5.setText(_translate("MainWindow", "Allrounders(AR)"))
        self.l3.setText(_translate("MainWindow", "<html><head/><body><p><span style=" color:#00aa00;">##</span></p></body></html>"))
        self.label_3.setText(_translate("MainWindow", "Wicket-keeper(WK)"))
        self.l4.setText(_translate("MainWindow", "<html><head/><body><p><span style=" color:#00aa00;">##</span></p></body></html>"))
        self.label_13.setText(_translate("MainWindow", "Points Available"))
        self.l5.setText(_translate("MainWindow", "<html><head/><body><p><span style=" color:#00aa00;">####</span></p></body></html>"))
        self.label_11.setText(_translate("MainWindow", "Points Used"))
        self.l6.setText(_translate("MainWindow", "<html><head/><body><p><span style=" color:#00aa00;">####</span></p></body></html>"))
        self.rb1.setText(_translate("MainWindow", "BAT"))
        self.rb2.setText(_translate("MainWindow", "BOW"))
        self.rb3.setText(_translate("MainWindow", "AR"))
        self.rb4.setText(_translate("MainWindow", "WK"))
        self.label_14.setText(_translate("MainWindow", "Team Name"))
        self.l7.setText(_translate("MainWindow", "<html><head/><body><p><span style=" color:#00aa00;">Displayed Here</span></p></body></html>"))
        self.label_16.setText(_translate("MainWindow", ">"))
        self.menuManage_Teams.setTitle(_translate("MainWindow", "Manage Teams"))
        self.actionNEW_Team.setText(_translate("MainWindow", "NEW Team"))
        self.actionOPEN_Team.setText(_translate("MainWindow", "OPEN Team"))
        self.actionSAVE_Team.setText(_translate("MainWindow", "SAVE Team"))
        self.actionEVALUATE_Team.setText(_translate("MainWindow", "EVALUATE Team"))

    def fillList(self):
        curcricket = MyCricket.cursor()

        if self.rb1.isChecked(): # Only showing for radiobutton1 code for rest buttons are similar.
            print("HELP")
            curcricket.execute("SELECT * FROM Stats WHERE Ctg = BAT;") # This is breaking my code, i added 2 print 'help' to check this breaking.
            print("HELP")
            BT = curcricket.fetchall()
            self.listW1.clear()
            for i in range(len(BT)):
                item1 = QtWidgets.QListWidgetItem(BT[i][0])
                font = QtGui.QFont()
                font.setFamily("Comic Sans MS")
                font.setPointSize(10)
                font.setBold(True)
                font.setWeight(75)
                item1.setFont(font)
                self.listW1.addItem(item1)
        curcricket.close()

if __name__ == "__main__":
    import sqlite3
    MyCricket=sqlite3.connect('MyCricket.db')
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())
  

Мое приложение содержит Qradiobuttons (BAT, BWL, AR, WK) и QlistWidgets
Всякий раз, когда нажимаются переключатели, я хочу, чтобы мой виджет списка заполнялся моей таблицей статистики (только столбец 1, то есть «Игрок» (player-name) определенной категории, столбец 7, то есть «Ctg» (BAT, BWL ..)) базы данных MyCricket.db. Я застрял с этой проблемой и не могу продолжить дальше. Я потратил много времени на поиск в Интернете, но не нашел soln к этому, я все еще исследую, поэтому, если у кого-нибудь есть ответ, пожалуйста, дайте мне знать.

Комментарии:

1. Я не использую PyQt, но обычно на Qt / C не нужно изменять код, автоматически сгенерированный QtDesigner… Обычно это вызывается из MainWindow класса, а не из Ui_* .

2. @TrebledJ Совершенно нормально модифицировать код, сгенерированный Qt designer (я тоже пробовал это раньше), мы создаем модули для вызова их в основной программе для простоты (в основном в случаях, связанных с длинными строками кодов)

3. @S.Nick Я добавил весь класс setupUi (пробелы в btw указывают на добавление операторов в коде), в этом коде нет ошибки, он работает нормально, но прерывается в инструкции execute (всякий раз, когда нажимается переключатель) в методе fillList…

4. @rohit523 поделитесь своим MyCricket.db

5. @eyllanesc github.com/rohit523/project.git , извините за позднюю загрузку .. я был немного занят сегодня … и я также новичок в github, поэтому проверял, как обмениваться файлами.. пожалуйста, дайте мне знать, если найдете ответ, спасибо!