python 中tkinter Entry 附值问题

[code]importtkinterastkclassa():def__init__(self,id):self.id=id#传入参数root=tk.Tk()var_e... [code]import tkinter as tk

class a():

def __init__(self,id):
self.id = id #传入参数
root =tk.Tk()
var_e =tk.StringVar()
e = tk.Entry(root,textvariable = var_e)
e.pack()
print (self.id)
var_e.set(self.id) #给Entry 附值 (b.py中传入的参数) root.mainloop()
#foo = a('1019')[/code]

[code]import a
import tkinter as tk
root =tk.Tk()
def test():
foo =a.a('1019') #调用a.py并传入参数‘1019’

e = tk.Button(root,text='var',command = test)#生成按钮,绑定按钮事件 调用test方法
e.pack()
root.mainloop()[/code]
如上 我写了2个py文档,a.py,b.py
如果 在a.py 中 建立实例 foo = a('1019') 然后运行 程序运行正常
但如果我在b.py 中点击按钮 调用a.py 并传入参数(参数传入成功了 print能打印出来), var_e.set(self.id) 这句就无法给 Entry附值。

所以救助各位,我实在想不到如何解决
展开
 我来答
放n赐
2019-05-14 · 超过11用户采纳过TA的回答
知道答主
回答量:14
采纳率:100%
帮助的人:11.4万
展开全部

主要原因出在你的b.py中的root = tk.Tk() 这一行代码。运行b.py时首先执行得就是这一行代码,然后就产生了一个新的窗口啊。

import a
import tkinter as tk


# root = tk.Tk()
def test():
    foo = a.a('1019')
    root = tk.Tk()
    e = tk.Button(root, text='var', command=test)
    e.pack()
    root.mainloop()


test()
追问
用了 您这个方式  
还是没有达到我想要的 效果
我想要的是 点击 按钮后
调用a.py。 您的方法 直接就把a.py调用了 看不到我要的按钮了
追答

你不把你功能说清楚........

主要原因是你用了两个tk.Tk()创建了两个主窗口,你把需要由按钮弹出得窗口设置为子窗口就是可以了。利用tk.Toplevel()创建。

下面是代码:a.py

import tkinter as tk


class A:

    def __init__(self, id):
        # 这是主要修改的地方
        root = tk.Toplevel()
        self.id = id
        var_e = tk.StringVar()
        e = tk.Entry(root,textvariable=var_e)
        e.pack()
        print(self.id)
        var_e.set(self.id)
        root.mainloop()

b.py

from a import A
import tkinter as tk


def test():
    foo = A('1019')


root = tk.Tk()
b = tk.Button(root, text='var', command=test)
b.pack()
root.mainloop()
超越666igkeq
2019-05-14
知道答主
回答量:17
采纳率:0%
帮助的人:1.2万
展开全部
捧个场希望得到采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式