【问题标题】:'receiver' is not defined while it does has value in it'receiver' 没有定义,但它确实有价值
【发布时间】:2020-04-06 04:43:48
【问题描述】:

我一直试图让这个函数运行,它总是出现这个错误,告诉我'receiver'没有定义,而'receiver'实际上是一个用户输入的词,并传递到这个窗口,我试图运行这个功能。我做错了什么?
第一个窗口的代码简化:

from PyQt5 import QtCore, QtGui, QtWidgets
from SecondWindow import Ui_SecondWindow

class Ui_FristWindow(object):

     def setupUi(self, FirstWindow):        
        MainWindow.resize(900, 700)

        self.horizontalLayout = QtWidgets.QHBoxLayout()               

        self.centralwidget = QtWidgets.QWidget(FirstWindow)        

        self.lineEdit1 = QtWidgets.QLineEdit(self.centralwidget)       
        self.horizontalLayout.addWidget(self.lineEdit1)

        self.pushButton = QtWidgets.QPushButton(self.centralwidget)        
        self.pushButton.clicked.connect(self.openwindow)
        self.horizontalLayout.addWidget(self.pushButton)

     def openwindow(self):
        self.window = QtWidgets.QMainWindow()
        self.receiver = self.lineEdit1.text()
        self.ui = Ui_SecondWindow(self.receiver)
        self.ui.setupUi(self.window)
        self.window.show()

代码简化,只保留第二个窗口的重要部分

import sqlite3
from PyQt5 import QtCore, QtGui, QtWidgets

conn = sqlite3.connect('storage.db')
cursor = conn.cursor()

class Ui_SecondWindow(object):

    def __init__(self, receiver):  #This is where the word got passed on from the first window
        self.receiver = receiver    
        print (self.receiver)      

    def select_db(self): 

        cursor.execute(('SELECT * FROM mytable WHERE Dragons = ?', self.receiver)) 
        data = cursor.fetchall()
        for row in data:
            row[0] = data2
        data2 = str(data2)
        print(len(data2))
        self.label_5.setText(str(data2))

window2 = Ui_WordWindow(receiver) # This is where it tells me that receiver is not defined while i already passed the word on receiver in __init__ func 
window2.select_db()
cursor.close()
conn.close

【问题讨论】:

    标签: python sqlite pyqt


    【解决方案1】:

    这是你的程序直到错误点:

    import sqlite3
    from PyQt5 import QtCore, QtGui, QtWidgets
    
    conn = sqlite3.connect('storage.db')
    cursor = conn.cursor()
    
    class Ui_SecondWindow(object):
        # define a class
    
    window2 = Ui_WordWindow(receiver)
    

    您在此处没有定义receiver__init__ 类函数需要此值才能执行。该方法的局部变量receiver 在您提供之前没有值,并且这两个变量不是同一个对象。

    【讨论】:

    • 我明白了,所以我也必须让接收器成为一个函数?以及如何使这两个变量成为同一个对象?抱歉,我是 python 新手,我一无所知
    • 您需要通过您的教材来学习这些基本工具;这不是个人教程的网站。备份并一次执行一步,而不是尝试编写整个程序的代码,并超越您当前的能力。 On topichow to ask 和 ...the perfect question 在此处申请。
    • 总的来说,你好像还没有设计你的系统:你不知道receiver是一个标量变量还是一个函数。我也不知道,因为您还没有定义您的预期设计,并且包含了很多与该问题无关的代码。
    猜你喜欢
    • 2011-06-29
    • 1970-01-01
    • 2015-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-20
    • 2023-03-14
    相关资源
    最近更新 更多