Python - 如何打印条目文本 tkinter



我在学习Python时正在编写一个基本的问答程序,并且我正在弄乱tkinter的函数。我正在尝试打印用户输入,但它只是打印一个空行。这是我的代码:

from tkinter import *
from tkinter import ttk
def response():
    value = str(var.get())
    print(value)
root = Tk()
root.title("Bot")
mainframe = ttk.Frame(root, padding = "5 5 15 15")
mainframe.grid(column=0, row=0), sticky=(N, W, E, S))
mainframe.columnconfigure(0, weight=1)
mainframe.rowconfigure(0, weight=1)
var = StringVar()
input_entry = ttk.Entry(mainframe, width=20, textvariable=var)
input_entry.grid(column=5, row=5, sticky = (W, E))
input_entry.pack()
ttk.Label(mainframe, textvariable=response).grid(column=2, row=2, sticky=(W, E)) 
ttk.Button(mainframe, text="Ask away!", command=response).grid(column=3,
row=3, sticky=W)
root.mainloop()

要获取条目小部件文本,您可以使用input_entry.get()

您可以在此处查看 ttk 条目小部件的文档

Pythonista说得对。第一个问题是您尝试在条目小部件中同时使用包和网格。使用网格更合适。其次,您在网格方法的错误位置添加了括号。
我看到的第三个问题是,当您创建标签和/或按钮时,您应该给出标签/按钮的名称与条目小部件一样。这样你就不会遇到以后要更改标签或按钮的名称时出现问题。尽管您这样做的方式会起作用并且代码更少,但从长远来看,结果会让您不那么头疼。下面是我认为您应该对脚本进行建模的示例:

 from tkinter import *
 root = Tk()
 root.title("Title")
 root.geometry('300x100')

 def clear_text(self):
     txtE.delete(0, 'end')

 def new_label(event=None):
     Entree = txtE.get()
     lbl1['text'] = 'Hello There ' + Entree.title()
     clear_text(txtE)

 lbl1 = Label(root, text='Enter Your Name:)
 lbl1.pack()
 txtE = Entry(root)
 txtE.focus()
 txtE.pack()
 Button(root, text='Enter', command=new_label).pack()
 Button(root, text='Quit', command=root.destroy).pack(side=BOTTOM)
 root.bind('<Return>', new_label)
 root.mainloop()

最新更新