#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, поэтому проверял, как обмениваться файлами.. пожалуйста, дайте мне знать, если найдете ответ, спасибо!