AttributeError: 'FourthWindow' object has no attribute 'Show_Set' Python Py Qt5
При попытке вызова возникает ошибка, якобы такого атрибута не существует, хотя он есть, при этом все классы окон идентичны но окно 4 и 5 не хочет открываться, из-за данной ошибки, абсолютно не понимаю в чем причина так как остальные окна работают.
class MyWidget(QMainWindow, Ui_MainWindow):
def __init__(self):
super(MyWidget, self).__init__()
self.setupUi(self)
self.setWindowTitle('FirstWindow')
self.A = set()
self.B = set()
self.C = set()
self.D = set()
self.D_4 = set()
self.U = set()
self.N_A = set()
self.N_B = set()
self.N_C = set()
self.Z = set()
self.start = ""
self.finish = ""
self.pushButton_4.clicked.connect(self.Set_Variant)
self.pushButton.clicked.connect(self.Set_A)
self.pushButton_2.clicked.connect(self.Set_B)
self.pushButton_3.clicked.connect(self.Set_C)
self.pushButton_9.clicked.connect(self.Universe_Set)
self.pushButton_5.clicked.connect(self.show_window_2)
self.pushButton_6.clicked.connect(self.show_window_3)
self.pushButton_7.clicked.connect(self.show_window_4)
self.pushButton_8.clicked.connect(self.show_window_5)
def Set_Variant(self):
Name = self.textEdit.toPlainText()
G = int(self.textEdit_2.toPlainText())
N = int(self.textEdit_3.toPlainText())
M = self.textEdit_4.toPlainText()
if M == "ІВ": N+=2
R = str((N+G%60)%30+1)
S = str(Name)+ " " + str(M) + "-" + str(G) +"\nМій варіант: " + str(R)
self.label_10.setText(str(S))
print(S)
def Universe_Set(self):
self.start = self.textEdit_11.toPlainText()
self.finish = self.textEdit_12.toPlainText()
self.U = set(int(x) for x in range(int(self.start),int(self.finish)+1))
print(self.U)
def Set_A(self):
F_1 = self.textEdit_5.toPlainText()
if F_1 == "":
a = self.textEdit_8.toPlainText()
self.A = set(int(x) for x in a.split())
else:
while len(self.A) < int(F_1):
self.A.add(random.randint(int(self.start),int(self.finish)))
self.N_A = self.U.difference(self.A)
print(self.A)
def Set_B(self):
F_2 = self.textEdit_6.toPlainText()
if F_2 == "":
b = self.textEdit_9.toPlainText()
self.B = set(int(x) for x in b.split())
else:
while len(self.B) <= int(F_2):
self.B.add(random.randint(int(self.start),int(self.finish)))
self.N_B = self.U.difference(self.B)
print(self.B)
def Set_C(self):
F_3 = self.textEdit_7.toPlainText()
if F_3 == "":
c = self.textEdit_10.toPlainText()
self.C = set(int(x) for x in c.split())
else:
while len(self.C) <= int(F_3):
self.C.add(random.randint(int(self.start),int(self.finish)))
self.N_C = self.U.difference(self.C)
print(self.C)
def show_window_2(self):
self.w2 = SecondWindow(self)
self.w2.show()
def show_window_3(self):
self.w3 = ThirdWindow(self)
self.w3.show()
def show_window_4(self):
self.w4 = FourthWindow(self)
self.w4.show()
def show_window_5(self):
self.w5 = FifthWindow(self)
self.w5.show()
############################################################################################################################
class SecondWindow(QMainWindow, Ui_Window_2):
def __init__(self, parent=None):
super(SecondWindow, self).__init__(parent)
self.parent = parent
self.setupUi(self)
self.setWindowTitle('SecondWindow')
self.C_1 = set()
self.C_2 = set()
self.C_3 = set()
self.C_4 = set()
self.C_5 = set()
self.pushButton.clicked.connect(self.Print_Set)
self.pushButton_4.clicked.connect(self.Calculate_1)
self.pushButton_5.clicked.connect(self.Calculate_2)
self.pushButton_6.clicked.connect(self.Calculate_3)
self.pushButton_7.clicked.connect(self.Calculate_4)
self.pushButton_8.clicked.connect(self.Calculate_5)
self.pushButton_9.clicked.connect(self.Calculate_6)
s
elf.pushButton_2.clicked.connect(self.Save_Text)
def Print_Set(self):
self.label_6.setText(str(self.parent.A))
self.label_7.setText(str(self.parent.B))
self.label_8.setText(str(self.parent.C))
def Calculate_1(self):
self.label_5.setText(str(self.parent.A))
self.label_9.setText(str(self.parent.N_B))
self.C_1 = self.parent.A.intersection(self.parent.N_B)
self.label_10.setText(str(self.C_1))
def Calculate_2(self):
self.label_5.setText(str(self.parent.B))
self.label_9.setText(str(self.parent.N_A))
self.C_2 = self.parent.B.intersection(self.parent.N_A)
self.label_10.setText(str(self.C_2))
def Calculate_3(self):
self.label_5.setText(str(self.parent.C))
self.label_9.setText(str(self.parent.B))
self.C_3 = self.parent.C.union(self.parent.B)
self.label_10.setText(str(self.C_3))
def Calculate_4(self):
self.label_5.setText(str(self.C_1))
self.label_9.setText(str(self.C_2))
self.C_4 = self.C_1.union(self.C_2)
self.label_10.setText(str(self.C_4))
def Calculate_5(self):
self.label_5.setText(str(self.C_4))
self.label_9.setText(str(self.C_3))
self.C_5 = self.C_4.intersection(self.C_3)
self.label_10.setText(str(self.C_5))
def Calculate_6(self):
self.label_5.setText(str(self.C_5))
self.label_9.setText(str(self.parent.C))
self.parent.D = self.C_5.intersection(self.parent.C)
self.label_10.setText(str(self.parent.D))
def Save_Text(self):
with open('file_1.txt', 'w') as f:
f.write(str(self.parent.D))
#############################################################################################################################
class ThirdWindow(QMainWindow, Ui_window_3):
def __init__(self, parent=None):
super(ThirdWindow, self).__init__(parent)
self.setupUi(self)
self.setWindowTitle('ThirdWindow')
self.parent = parent
self.D_1 = set()
self.pushButton.clicked.connect(self.Print_Set)
self.pushButton_2.clicked.connect(self.Save_Text_2)
self.pushButton_4.clicked.connect(self.Do_1)
self.pushButton_9.clicked.connect(self.Do_2)
def Print_Set(self):
self.label_6.setText(str(self.parent.A))
self.label_7.setText(str(self.parent.B))
self.label_8.setText(str(self.parent.C))
def Do_1(self):
self.label_5.setText(str(self.parent.A))
self.label_9.setText(str(self.parent.B))
self.D_1 = self.parent.A.symmetric_difference(self.parent.B)
self.label_10.setText(str(self.D_1))
def Do_2(self):
self.label_5.setText(str(self.D_1))
self.label_9.setText(str(self.parent.C))
self.parent.D_4 = self.D_1.intersection(self.parent.C)
self.label_10.setText(str(self.parent.D_4))
def Save_Text_2(self):
with open('file_2.txt', 'w') as f:
f.write(str(self.parent.D_4))
############################################################################################################################
class FourthWindow(QMainWindow, Ui_window_4):
def __init__(self, parent=None):
super(FourthWindow, self).__init__(parent)
self.setupUi(self)
self.setWindowTitle('FourthWindow')
self.parent = parent
self.Z_1 = set()
self.Z_2 = set()
self.pushButton.clicked.connect(self.Show_Set)
self.pushButton_2.clicked.connect(self.Save_Text)
def Show_Set(self):
self.label_4.setText(str(self.parent.A))
self.label_6.setText(str(self.parent.N_B))
self.Z_1 = self.parent.N_A.intersection(self.parent.B)
self.Z_2 = self.parent.N_B.intersection(self.parent.A)
self.parent.Z = self.Z_1.union(self.Z_2)
self.label_7.setText(str(self.parent.Z))
def Save_Text(self):
with open('file_3.txt', 'w') as f:
f.write(str(sel
f.parent.Z))
#############################################################################################################################
class FifthWindow(QMainWindow, Ui_window_5):
def __init__(self, parent=None):
super(FifthWindow, self).__init__(parent)
self.setupUi(self)
self.setWindowTitle('FifthWindow')
self.parent = parent
self.pushButton.clicked.connect(self.Result_1)
self.pushButton_2.clicked.connect(self.Result_2)
self.pushButton_3.clicked.connect(self.Result_3)
self.pushButton_4.clicked.connect(self.Compare_Set)
def Result_1(self):
self.label_7.setText(str(self.parent.D))
def Result_2(self):
self.label_8.setText(str(self.parent.D))
def Result_3(self):
self.label_9.setText(str(self.parent.Z))
def Compare_Set(self):
self.label_10.setText(str(self.parent.D))
self.label_11.setText(str(self.parent.D_4))
self.label_12.setText(str(self.parent.D))
#############################################################################################################################
if name == '__main__':
app = QApplication(sys.argv)
ex = MyWidget()
ex.show()
sys.exit(app.exec_())
Ошибка:
Traceback (most recent call last):
self.w4 = FourthWindow(self)
File "LAB_1.py", line 1006, in init
self.pushButton.clicked.connect(self.Show_Set)
AttributeError: 'FourthWindow' object has no attribute 'Show_Set'
Ответы (1 шт):
Автор решения: gil9red
→ Ссылка
Проблема в вложенности кода, в вашем варианте, у вас Show_Set и Save_Text объявляются не как методы класса, а как созданные в __init__ функции, причем после обращения к ним.
Правильно так:
class FourthWindow(QMainWindow, Ui_window_4):
def __init__(self, parent=None):
super(FourthWindow, self).__init__(parent)
self.setupUi(self)
self.setWindowTitle('FourthWindow')
self.parent = parent
self.Z_1 = set()
self.Z_2 = set()
self.pushButton.clicked.connect(self.Show_Set)
self.pushButton_2.clicked.connect(self.Save_Text)
def Show_Set(self):
self.label_4.setText(str(self.parent.A))
self.label_6.setText(str(self.parent.N_B))
self.Z_1 = self.parent.N_A.intersection(self.parent.B)
self.Z_2 = self.parent.N_B.intersection(self.parent.A)
self.parent.Z = self.Z_1.union(self.Z_2)
self.label_7.setText(str(self.parent.Z))
def Save_Text(self):
with open('file_3.txt', 'w') as f:
f.write(str(self.parent.Z))