【发布时间】: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
【问题讨论】: