python - 如何在 python tkinter 中显示从子窗口到父窗口的值?

标签 python user-interface python-3.x tkinter

我有一个带有文本和按钮的父窗口。单击父窗口中的按钮,子窗口将打开,其中包含输入框和一个按钮。现在,当我在子窗口的输入框中输入内容并单击子窗口的提交时,在子窗口输入框中输入的数据应该出现在父窗口的文本框中,我该怎么做?我的代码如下。

from tkinter import *


class Application(Frame):

    def __init__(self,  master):
        super(Application,self).__init__(master)
        self.grid()
        self.create_widgets()

    def create_widgets(self):
        self.t1=Text(self,width=10,height=2)
        self.t1.grid(row=1,column=1)
        self.b1=Button(self,text="create",command=self.onClick)
        self.b1.grid(row=2,column=1)

    def onClick(self):
        self.top = Toplevel()
        self.top.title("title")
        self.top.geometry("300x150+30+30")
        self.top.transient(self)
        self.appc=Demo(self.top)

class Demo:

    def __init__(self, master):
        self.master = master
        self.frame = Frame(self.master)
        self.widget()

    def widget(self):
        self.e1=Entry(self.master)
        self.e1.grid(row=1,column=1)
        self.b1=Button(self.master,text="submit",command=self.onSubmit)
        self.b1.grid(row=2,column=1)

    def onSubmit(self):
        self.value=self.e1.get()
        print(self.value)
    root=Tk()
    app=Application(root)
    app.mainloop()`

最佳答案

您必须通过构造函数将您的 Text 小部件的引用传递给您的子窗口。之后,您可以完全控制 Demo 类中的小部件。因此,在您的 onSubmit 方法中,只需使用 insert 方法:

from tkinter import *
class Application(Frame, object):
    def __init__(self,  master):
        super(Application, self).\
            __init__(master)
        self.grid()
        self.create_widgets()


    def create_widgets(self):
        self.t1=Text(self,width=10,height=2)
        self.t1.grid(row=1,column=1)
        self.b1=Button(self,text="create",command=self.onClick)
        self.b1.grid(row=2,column=1)

    def onClick(self):
        self.top = Toplevel()
        self.top.title("title")
        self.top.geometry("300x150+30+30")
        self.top.transient(self)
        self.appc=Demo(self.top, self.t1)

class Demo(object):
    def __init__(self, master, t1):
        self.master = master
        self.frame = Frame(self.master)
        self.t1 = t1
        self.widget()

    def widget(self):
        self.e1=Entry(self.master)
        self.e1.grid(row=1,column=1)
        self.b1=Button(self.master,text="submit",command=self.onSubmit)
        self.b1.grid(row=2,column=1)

    def onSubmit(self):
        self.t1.insert(INSERT, self.e1.get())


root=Tk()
app=Application(root)
app.mainloop()

关于python - 如何在 python tkinter 中显示从子窗口到父窗口的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36831909/

相关文章:

python - 如何在 2d python 列表中找到最大数

python - For循环不更新列表

python - pandas 更有效地从 csv 创建字典对象以作为 post 请求发送

c++ - 正确的点击事件

python - AWS Kinesis 消费者 Python 3.4 Boto

python - 无法在 Mac 上保存带有德语字母的 .py 文件

java - GUI JButton,如何将按钮(问题)分配给答案

ios - 在我的应用程序上模仿 iOS 7 的主屏幕搜索栏

Python 滚动文本模块

python-3.x - 如何得到逻辑回归的正确答案?