Python - 如何打印输入文本tkinter?

时间:2016-03-13 18:20:03

标签: python tkinter printing tkinter-entry

当我学习Python时,我正在编写一个基本的Q& A程序,而且我正在搞乱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()

2 个答案:

答案 0 :(得分:0)

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

您可以查看ttk条目小部件here

的文档

答案 1 :(得分:0)

Pythonista做对了。 第一个问题是您试图在输入小部件中同时使用pack和grid。 使用网格更合适。 其次是您在网格方法的错误位置添加了括号。
我看到的第三个问题是,创建标签和/或按钮时,您应该 标签/按钮的名称与输入小部件相同。这样你就不会碰到 如果您想更改标签或按钮的名称,以后会出现问题。尽管您这样做的方式可以工作,并且代码更少,但是从长远来看,最终的结果将为您减少麻烦。以下是我认为应该对脚本进行建模的示例:

 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()