У меня есть GUI-класс с (кнопка, два окна ввода и список), я хочу вставить в Listbox некоторые данные из другого класса. Вот мой GUI класс ...Как добавить данные в список из Tkinter из другого класса?
class GUI(object):
def __init__(self, parent):
frame = Frame(parent.title("CAN Interface"))
frame.pack()
self.lbfirst = Label(frame, text="CAN ID:")
self.lbfirst.grid(row=1,column=0)
self.first = Entry(frame)
self.first.grid(row=2,column=0)
self.lbsecond = Label(frame, text="CAN Data:")
self.lbsecond.grid(row=1,column=2)
self.second = Entry(frame)
self.second.grid(row=2,column=2)
self.number=Button(frame, text="Send", fg="red", command=self.call_comm)
self.number.grid(row=5,column=1)
self.result = Listbox(frame)
self.result.grid(row=9,column=0, columnspan=5, sticky=N+S+E+W)
def call_comm_rxc(self, data1):
print("in call_comm_rxc")
self.data1 = data1
self.result.insert (END, 'CAN ID : '+str(self.data1[0])+'|Length : '+str(self.data1[1])+'|Data : '+str(self.data1[2]))
& это мой другой класс, от которого я хочу, чтобы получить доступ к self.result атрибут класса GUI
class Comm(Thread, Format, GUI):
def __init__(self):
Thread.__init__(self) # Call the Thread class's init function
def run(self):
while True:
# here need to add the code which needs to run all the time
print("in true")
self.CAN_Receive()
def CAN_Receive(self):
print("in rxc")
#self.result1 = result1
self.data = Format.UnPack(self,b'\x12\x00\x00\x00\x03\x00\x00\x00\x01\x02\x03\x00\x00\x00\x00\x00')
GUI.call_comm_rxc(self, self.data)
Ошибка, которую я облицовкой «AttributeError: объект„Comm“не имеет атрибута„результат“
Exception in thread Thread-1:
Traceback (most recent call last):
File "C:\Python33\lib\threading.py", line 901, in _bootstrap_inner
self.run()
File "E:\Studies\Ctech\MicroLab Files\example code.py", line 124, in run
self.CAN_Receive()
File "E:\Studies\Ctech\MicroLab Files\example code.py", line 141, in CAN_Receive
GUI.call_comm_rxc(self, self.data)
File "E:\Studies\Ctech\MicroLab Files\example code.py", line 110, in call_comm_rxc
self.result.insert (END, 'CAN ID : '+str(self.data1[0])+'|Length : '+str(self.data1[1])+'|Data : '+str(self.data1[2]))
AttributeError: 'Comm' object has no attribute 'result'
Пожалуйста, помогите мне, как я могу вставить в Listbox из дочернего класса (Comm)
Да, этот пункт отсутствовал, но как я могу передать родительский атрибут 'Comm .__ init __ (self, parent)', который будет передан в GUI .__ init __ (self, parent) '. У меня есть код 'testComm = Comm()' ' testComm.start()' ' корень = Tk()' ' приложение = GUI (корень)' ' root.mainloop()' – user3159610
@ user3159610 Пут ' root = Tk() 'в начале и make' testComm = Comm (root) ' – Liteye
Спасибо, это сработало для меня – user3159610