尝试在PyQT5中查看数据时Python崩溃

时间:2019-04-25 11:32:53

标签: python python-3.x pyqt pyqt5

很抱歉,我的头衔不清楚;我正在尝试从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知识。

编辑:我已经附上了我收到的错误消息的屏幕截图。

Error

2 个答案:

答案 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_()) 

enter image description here