Мне нужна помощь. Я создал объект в одном классе и не могу передать информацию другому классу.
Это класс, который я пытаюсь сделать объектом с
class BankAccount():
def __init__(self, name, acct):
self.full_name = name
self.acctNum = acct
self.balance = 0
def withdraw(self, w):
self.balance = self.balance - w
w = float(w)
return self.balance
def deposit(self, d):
self.balance = self.balance + d
d = float(d)
return self.balance
def balance(self):
return self.balance()
Это класс, который делает объект
class Window(QtWidgets.QWidget):
def btnclicked(self):
search_name = self.sender()
if search_name.text() in namecheck:
with open('C:/Users/rbell/PycharmProjects/SDEV140/Final_project/users.txt') as fhand:
for line in fhand:
if search_name.text() in line:
line = line.rstrip('\n')
array = line.split(",")
stringtofloat = float(array[2])
x = BankAccount(array[0], array[1])
x.balance = stringtofloat
print(x.full_name,x.acctNum, x.balance)
self.secwin.show()
else:
print('\nError\n')
def __init__(self, parent=None):
super(Window, self).__init__(parent)
self.left = 440
self.top = 260
self.width = 640
self.height = 480
self.lineedit = QtWidgets.QLineEdit("");
self.button1 = QtWidgets.QPushButton("OK");
self.label1 = QtWidgets.QLabel("Welcome to Reese's Bank!\nEnter account number:")
vbox = QtWidgets.QVBoxLayout()
vbox.addWidget(self.label1)
vbox.addWidget(self.lineedit)
self.setLayout(vbox)
self.setGeometry(self.top, self.left, self.width, self.height)
self.setWindowTitle("first window")
self.show()
self.lineedit.editingFinished.connect(self.btnclicked)
self.secwin = secondwindow()
Как взять данные x = BankAccount () и использовать их в другом классе, например
class ViewBalance(QtWidgets.QWidget):
def __init__(self, parent=None):
super(ViewBalance, self).__init__(parent)
self.button1 = QtWidgets.QPushButton("Close");
self.label1 = QtWidgets.QLabel("Your balance is: ")
self.label2 = QtWidgets.QLabel("x.Balance")
vbox = QtWidgets.QVBoxLayout()
vbox.addWidget(self.label1)
vbox.addWidget(self.label2)
vbox.addWidget(self.button1)
self.setLayout(vbox)
В self.label2 я хотел бы отобразить баланс объекта x BankAccount. Имеет ли значение порядок занятий? Класс BankAccount находится вверху под Imports, класс ViewBalance находится под BankAccount, а класс окна находится внизу.
Это код целиком
import sys
from PyQt5 import QtCore, QtWidgets, QtGui
with open('numlist.txt') as f:
namecheck = [line.rstrip('\n') for line in f]
search_name=999
w=0
d=0
sendto=''
class BankAccount():
def __init__(self, name, acct):
self.full_name = name
self.acctNum = acct
self.balance = 0
def withdraw(self, w):
self.balance = self.balance - w
w = float(w)
return self.balance
def deposit(self, d):
self.balance = self.balance + d
d = float(d)
return self.balance
def balance(self):
return self.balance()
# def saveinfo():
# accountname = str(x.full_name)
# accountnumber= str(x.acctNum)
# accountbalance= str(x.balance)
# objectlist= [accountname + ', ' + accountnumber + ', ' + accountbalance]
# savedata = (objectlist[0])
# latestsave= savedata
# with open('users.txt', 'r') as ds:
# with open('tempuserlist.txt', 'w') as es:
# for line in ds:
# if x.acctNum not in line:
# es.write(line)
# with open('users.txt', 'r') as ds:
# with open('lastuseredit.txt', 'w') as es:
# if latestsave not in line:
# es.write('\n')
# es.write(savedata)
# joinfiles=['tempuserlist.txt', 'lastuseredit.txt']
# with open('users.txt', 'w') as output:
# for thing in joinfiles:
# with open(thing) as input:
# output.write(input.read())
class ViewBalance(QtWidgets.QWidget):
def __init__(self, parent=None):
super(ViewBalance, self).__init__(parent)
self.button1 = QtWidgets.QPushButton("Close");
self.label1 = QtWidgets.QLabel("Your balance is: ")
self.label2 = QtWidgets.QLabel("x.Balance")
vbox = QtWidgets.QVBoxLayout()
vbox.addWidget(self.label1)
vbox.addWidget(self.label2)
vbox.addWidget(self.button1)
self.setLayout(vbox)
class DepositMoney(QtWidgets.QWidget):
def __init__(self, parent=None):
super(DepositMoney, self).__init__(parent)
self.button1 = QtWidgets.QPushButton("OK");
self.label1 = QtWidgets.QLabel("How much would you like to deposit? ");
self.lineedit1 = QtWidgets.QLineEdit();
vbox = QtWidgets.QVBoxLayout()
vbox.addWidget(self.label1)
vbox.addWidget(self.lineedit1)
vbox.addWidget(self.button1)
self.setLayout(vbox)
class WithdrawMoney(QtWidgets.QWidget):
def __init__(self, parent=None):
super(WithdrawMoney, self).__init__(parent)
self.button1 = QtWidgets.QPushButton("OK");
self.label1 = QtWidgets.QLabel("How much would you like to withdraw? ");
self.lineedit1 = QtWidgets.QLineEdit();
vbox = QtWidgets.QVBoxLayout()
vbox.addWidget(self.label1)
vbox.addWidget(self.lineedit1)
vbox.addWidget(self.button1)
self.setLayout(vbox)
class secondwindow(QtWidgets.QMainWindow):
def buttonclk(self):
sender = self.sender()
try:
if sender.text() == "View Balance":
self.vb.show()
elif sender.text() == "Deposit":
self.dm.show()
elif sender.text() == "Withdraw":
self.wm.show()
elif sender.text() == "Save/Exit":
exit()
except ValueError:
print("Try again")
def __init__(self):
super(secondwindow, self).__init__()
central_widget = QtWidgets.QWidget()
self.left = 440
self.top = 260
self.width = 640
self.height = 480
self.label1 = QtWidgets.QLabel("Hello x.Full_name");
self.button1 = QtWidgets.QPushButton("View Balance");
self.button2 = QtWidgets.QPushButton("Deposit");
self.button3 = QtWidgets.QPushButton("Withdraw");
self.button4 = QtWidgets.QPushButton("Save/Exit");
hbox = QtWidgets.QHBoxLayout(central_widget)
hbox.addWidget(self.label1)
hbox.addWidget(self.button1)
hbox.addWidget(self.button2)
hbox.addWidget(self.button3)
hbox.addWidget(self.button4)
self.setCentralWidget(central_widget)
self.button1.clicked.connect(self.buttonclk)
self.button2.clicked.connect(self.buttonclk)
self.button3.clicked.connect(self.buttonclk)
self.button4.clicked.connect(self.buttonclk)
self.vb = ViewBalance()
self.dm = DepositMoney()
self.wm = WithdrawMoney()
self.setGeometry(self.top, self.left, self.width, self.height)
self.setWindowTitle("Second window")
class Window(QtWidgets.QWidget):
def btnclicked(self):
search_name = self.sender()
if search_name.text() in namecheck:
with open('users.txt') as fhand:
for line in fhand:
if search_name.text() in line:
line = line.rstrip('\n')
array = line.split(",")
stringtofloat = float(array[2])
x = BankAccount(array[0], array[1])
x.balance = stringtofloat
print(x)
print("it's here")
self.secwin.show()
else:
print('\nError\n')
def __init__(self, parent=None):
super(Window, self).__init__(parent)
self.left = 440
self.top = 260
self.width = 640
self.height = 480
self.lineedit = QtWidgets.QLineEdit();
self.label2 = QtWidgets.QLabel("Press enter when ready!");
self.label1 = QtWidgets.QLabel("Welcome to Reese's Bank!\nEnter account number:")
vbox = QtWidgets.QVBoxLayout()
vbox.addWidget(self.label1)
vbox.addWidget(self.lineedit)
vbox.addWidget(self.label2)
self.setLayout(vbox)
self.lineedit.editingFinished.connect(self.btnclicked)
self.secwin = secondwindow()
self.setGeometry(self.top, self.left, self.width, self.height)
self.setWindowTitle("first window")
self.show()
def main():
app = QtWidgets.QApplication(sys.argv)
main = Window()
main.show
sys.exit(app.exec())
if __name__ == '__main__':
main()
Код читает и должен записывать в два разных файла для получения готовых объектов, таких как Reese, 000, 500.0.