很抱歉,我的头衔不清楚;我正在尝试从SQLLite数据库(正在运行)中检索一些数据,并将其在PyQt5中的窗口上显示给用户。到目前为止,我已经设法检索结果并在Python中打印,但是当尝试在窗口中添加/查看结果时,Python完全崩溃了。 我插入了下面无法使用的代码。 (缩进在复制时变得有些滑稽,但是在我的文件中完全可以)。
class Profile(QWidget):
def __init__(self, Type):
super().__init__()
self.window = QWidget()
self.window.setGeometry(100,100, 350, 400)
self.window.setWindowTitle("Welcome")
self.window.show()
self.Choices()
def Choices(self):
self.layout = QGridLayout()
c.execute('''SELECT username, teamname FROM Users WHERE username = ?''',
(user,))
result = c.fetchone()
print(result)
print(user)
self.TeamInfo = QLabel(result)
self.layout.addWidget(self.TeamInfo)
self.window.setLayout(self.layout)
self.window.show()
user
是上一个窗口(登录页面)中的全局变量,以避免用户不得不重新输入其用户名。不包括此部分,因为这不是问题。该类中的所有其他按钮都可以使用-只是此特定部分。非常感谢您提供有关如何解决此问题的帮助,我认为问题是self.TeamInfo = QLabel(result)
行,但是我不具备有关如何解决此问题的PyQT5知识。
编辑:我已经附上了我收到的错误消息的屏幕截图。
答案 0 :(得分:1)
如果我理解正确,那么您正在尝试向QLabel添加文本,对吗?
根据文档,添加文本的方法是:QLabel().setText(result)
。
编辑:您能不能尝试一下,并告诉我编译器在抱怨什么?
label = QLabel()
label.setText(result)
self.layout.addWidget(label)
答案 1 :(得分:0)
尝试一下:
import sys
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
import sqlite3
class Profile(QWidget):
def __init__(self, Type=None):
super().__init__()
self.window = QWidget()
self.window.setGeometry(100,100, 350, 400)
self.window.setWindowTitle("Welcome")
self.Choices()
def Choices(self):
self.layout = QGridLayout()
# c.execute('''SELECT username, teamname FROM Users WHERE username = ?''',
# (user,))
# result = c.fetchone()
#
user = "Nick"
try:
self.conn = sqlite3.connect("database.db")
self.c = self.conn.cursor()
# result = self.c.execute("SELECT * from students WHERE name='{}'".format(user) )
result = self.c.execute("SELECT * from students WHERE name=?", (user, ))
row = result.fetchone() # <---
print("\nrow->", type(row), row)
serachresult = "Rollno : "+str(row[0])+'\n'+"Name : "+str(row[1])+'\n'+"Branch : "+str(row[2])+'\n'+"Sem : "+str(row[3])+'\n'+"Address : "+str(row[4])
QMessageBox.information(QMessageBox(), 'Successful', serachresult)
self.conn.commit()
self.c.close()
self.conn.close()
except Exception:
QMessageBox.warning(QMessageBox(), 'Error', 'Could not Find student from the database.')
print(result)
print(user)
self.TeamInfo = QLabel(", ".join([ str(i) for i in row ])) # <---
self.layout.addWidget(self.TeamInfo)
self.window.setLayout(self.layout)
self.window.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
main = Profile()
main.show()
sys.exit(app.exec_())