如何将Entry小部件中的文本输入存储到列表中?

时间:2015-06-27 08:59:44

标签: python-2.7 tkinter

我一直试图将它作为单个字符串存储,更不用说将它附加到列表中了,通过为它创建一个名为" Whatisthisthing"的变量,但它不起作用。另外,你知道为什么我不能使用" Whatisthisthing"用定义Showoncanvas替换Entry.get()?

import Tkinter
import random

master = Tkinter.Tk()

Entry = Tkinter.Entry()
Entry.pack()
Whatisthisthing = Entry.get()

Canvas = Tkinter.Canvas()
Canvas.pack()

def Showoncanvas(event):
    Canvas.create_text(random.randint(10,100), random.randint(10,100), anchor = "center", text=Entry.get())



Entry.bind("<Return>", Showoncanvas)

print Whatisthisthing


master.mainloop()

1 个答案:

答案 0 :(得分:1)

条目小部件具有textvariable选项,其中存储当前文本/内容。如果您使用StringVar作为textvariable,则内容会自动与此变量同步,并且可以使用StringVar的.get()方法读取。

由于我的系统上没有安装Python 2.7,因此我将您的代码转换为Python 3并使用了提到的StringVar及其.get()方法:

#!/usr/bin/env python3
# coding: utf-8

import tkinter
import random

master = tkinter.Tk()

Whatisthisthing = tkinter.StringVar()
Entry = tkinter.Entry(textvariable=Whatisthisthing)
Entry.pack()

Canvas = tkinter.Canvas()
Canvas.pack()

def Showoncanvas(event):
    Canvas.create_text(random.randint(10,100), random.randint(10,100), anchor="center", text=Whatisthisthing.get())

Entry.bind("<Return>", Showoncanvas)

print(Whatisthisthing.get())

master.mainloop()

Python 2和Python 3之间的唯一区别应该是:

  • Tkinter - &gt; tkinter
  • print - &gt; print()