从子窗口获取条目?

2024-09-23 06:36:09 发布

您现在位置:Python中文网/ 问答频道 /正文

由于某种原因,我无法从子窗口获取条目。 我想从子窗口获取条目,然后绘制一个矩形。 我得到的错误是:x=float(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()

Tags: textselfmaindefbuttonrootleftside
1条回答
网友
1楼 · 发布于 2024-09-23 06:36:09

问题是graphCupe中的self引用了MainWindow实例,而不是子窗口。您需要将子窗口传递到graphCupe函数中。这是一种方法:

    def Cupe(self):
        ...
        button=tk.Button(c,text="Graph",command=lambda: self.graphCupe(c))
        button.pack(side="bottom")

    def graphCupe(self,window):
        x=float(window.txtSide.get())
        ...

现在,graphCupe函数接受它需要操作的窗口,按钮调用该函数并将其传递给它的子窗口。在

相关问题 更多 >