为什么使用.get()但是返回的是空值?

使用.get()但是返回的是空值

代码如下:


def zc1():
    print(ac1)    
    zcck.destroy()
            
            
zcck = tk.Tk()
zcck.title('注册窗口')
zcck.geometry('400x200')
    
zh = tk.Label(zcck,text='账号:')
zh.pack(side='left', pady=5)

zh1 = tk.Text(zcck,width=15,height=1)
zh1.pack(side='left', pady=5)
    
ac1 = zh1.get('1.0',END)

但是在测试的时候会发现打印出来的是空值,但是我不太明白哪里出了问题。

img

因为你在 ac1 的赋值语句 ac1 = zh1.get('1.0', END) 在窗口初始化时就执行了,此时 zh1 对象是一个空的文本框。
你应该在需要获取值的时候调用 .get() 方法。在你的代码中,你在 zc1 函数中尝试打印 ac1,但是在函数内部并没有更新 ac1 的值。
所以你应该将

def zc1():
    ac1 = zh1.get('1.0', end)  
    print(ac1)    
    zcck.destroy()

```

【以下回答由 GPT 生成】

问题分析: 在代码中调用zh1.get('1.0', 'end')获取zh1文本框中的值是在文本框创建时就调用的,此时文本框还是空的,所以返回的是空值。

解决方案: 可以在点击按钮或者其他操作触发事件时再调用zh1.get('1.0', 'end')获取输入的值。

import tkinter as tk

def zc1():
    ac1 = zh1.get('1.0', 'end')
    print(ac1)    
    zcck.destroy()

zcck = tk.Tk()
zcck.title('注册窗口')
zcck.geometry('400x200')

zh = tk.Label(zcck, text='账号:')
zh.pack(side='left', pady=5)

zh1 = tk.Text(zcck, width=15, height=1)
zh1.pack(side='left', pady=5)

button = tk.Button(zcck, text='提交', command=zc1)
button.pack(side='left', pady=5)

zcck.mainloop()

在上述代码中,添加了一个按钮,点击按钮时调用zc1()函数,内部再获取文本框中的值,这样就可以在点击按钮时获取输入的值。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^