По какой-то причине я не могу получить запись из дочернего окна. Я хочу получить запись из дочернего окна, а затем нарисую прямоугольник. ошибка, что я получаю: х = поплавок (self.txtSide.get()) AttributeError: объект 'MainWindow' не имеет атрибут 'txtSide'Получение записи из дочернего окна?
import tkinter as tk
import turtle
tu=turtle
class MainWindow(tk.Frame):
def __init__(self, *args, **kwargs):
tk.Frame.__init__(self, *args, **kwargs)
self.button = tk.Button(self, text="Cupe",command=self.Cupe)
self.button.pack(side="top")
def Cupe(self):
c = tk.Toplevel(self)
c.wm_title("Cupe")
lab=tk.Label(c,text="Side")
lab.pack()
c.txtSide=tk.Entry(c)
c.txtSide.pack()
button=tk.Button(c,text="Graph",command=self.graphCupe)
button.pack(side="bottom")
def graphCupe(self):
x=float(self.txtSide.get())
tu.forward(x)
tu.left(90)
tu.forward(x)
tu.left(90)
tu.forward(x)
tu.left(90)
tu.forward(x)
if __name__ == "__main__":
root = tk.Tk()
main = MainWindow(root)
main.pack(side="top", fill="both", expand=True)
root.mainloop()
Другое решение, конечно же, должно сделать 'txtSide' атрибутом' self' ('self.txtSide = ...') –
Это также сработает, но если откроется другое дочернее окно, оно перезапишет атрибут. Затем, если дочернее окно 1 пытается вызвать 'graphCupe()', он будет использовать атрибут 'txtSide' из дочернего окна 2. –