Python Tkinter StringVar仅显示Py_Var(数字)

Python Tkinter StringVar仅显示Py_Var(数字),python,tkinter,tkinter-entry,Python,Tkinter,Tkinter Entry,我正在使用Python3.4中的Tkinter制作一个基于文本的游戏,我不知道如何从Entry小部件中获取字符串,它只返回一个数字。我看过类似问题的答案,但没有一个完全符合我的需求。以下是相关的代码片段: from tkinter import * win = Tk() win.geometry("787x600") playername = StringVar() def SubmitName(): playername.get #messagebox.showinf

我正在使用Python3.4中的Tkinter制作一个基于文本的游戏,我不知道如何从Entry小部件中获取字符串,它只返回一个数字。我看过类似问题的答案,但没有一个完全符合我的需求。以下是相关的代码片段:

from tkinter import * 

win = Tk() 
win.geometry("787x600")

playername = StringVar()

def SubmitName():
    playername.get
    #messagebox.showinfo("Success", playername)
    print(playername)

frame3 = Frame(win) 
frame3.pack()
label1 = Label(frame3, text="You awaken in a room, with no memories of yourself or your past. ")

label2 = Label(frame3, text="First, how about you give yourself a name:")

label1.config(font=("Courier", 11)) 
label2.config(font=("Courier", 11))

entry1 = Entry(frame3, textvariable=playername) 
entry1.config(font=("Courier", 11))

label1.grid(row=0, column=0, columnspan=3) 
label2.grid(row=1, column=0)

entry1.grid(row=1, column=1)

bnamesub= Button(frame3, text="Submit", command=lambda: SubmitName()) 
bnamesub.grid()

win.mainloop()

另外,第一次使用stackoverflow和它的读数很奇怪,但是在
SubmitName()
中有两个错误

首先,您需要获得如下文本:

txt = playername.get()
然后您需要打印该
txt

print(txt)

错误地打印了
StringVar
变量本身。

SubmitName()
中有两个错误

from tkinter import *
import pickle

win = Tk()
win.geometry("787x600")

def SubmitName():
        playername = entry1.get()
        messagebox.showinfo("Success", playername)
        print(playername)

frame3 = Frame(win)
frame3.grid()
label1 = Label(frame3, text="You awaken in a room, with no memories of yourself or your past. ")

label2 = Label(frame3, text="First, how about you give yourself a name:")

label1.config(font=("Courier", 11))
label2.config(font=("Courier", 11))

#name entered is a StringVar, returns as Py_Var7, but I need it to return the   name typed into entry1.
entry1 = Entry(frame3)
entry1.config(font=("Courier", 11))

label1.grid(row=0, column=0, columnspan=3)
label2.grid(row=1, column=0)

entry1.grid(row=1, column=1)

bnamesub= Button(frame3, text="Submit", command=lambda: SubmitName())
bnamesub.grid()
首先,您需要获得如下文本:

txt = playername.get()
然后您需要打印该
txt

print(txt)
错误地打印了
StringVar
变量本身

from tkinter import *
import pickle

win = Tk()
win.geometry("787x600")

def SubmitName():
        playername = entry1.get()
        messagebox.showinfo("Success", playername)
        print(playername)

frame3 = Frame(win)
frame3.grid()
label1 = Label(frame3, text="You awaken in a room, with no memories of yourself or your past. ")

label2 = Label(frame3, text="First, how about you give yourself a name:")

label1.config(font=("Courier", 11))
label2.config(font=("Courier", 11))

#name entered is a StringVar, returns as Py_Var7, but I need it to return the   name typed into entry1.
entry1 = Entry(frame3)
entry1.config(font=("Courier", 11))

label1.grid(row=0, column=0, columnspan=3)
label2.grid(row=1, column=0)

entry1.grid(row=1, column=1)

bnamesub= Button(frame3, text="Submit", command=lambda: SubmitName())
bnamesub.grid()
我改变了什么:
-已删除
playername=StringVar()
。我们并不真的需要它
-在函数内部更改:将
playername.get
更改为
playername=entry1.get()

-添加了
frame3.grid()
(没有几何体管理,窗口小部件无法在屏幕上显示)
-还有一点编辑:在Python中,注释是用
#
符号创建的。所以我把
*
改为

我改变了什么:
-已删除
playername=StringVar()
。我们并不真的需要它
-在函数内部更改:将
playername.get
更改为
playername=entry1.get()

-添加了
frame3.grid()
(没有几何体管理,窗口小部件无法在屏幕上显示)

-还有一点编辑:在Python中,注释是用
#
符号创建的。因此,我将
*
更改为
#

我很高兴在这里找到解决方案,但所有这些“原样”的答案都不适用于我的设置python3.8和pycharm 2018.2 所以,如果有人能够回答这个问题,那么entry1.get()似乎不能用作字符串。我首先想把它添加到一个列表中,我做了一个更简单的版本来指出问题:

from tkinter import *
import pickle

win = Tk()
win.geometry("300x300")
#playername = StringVar()

def SubmitName():
    labell = Label(win, text="Little tryup").grid()
    playername = entry1.get()
    # result about line 11: 'NoneType' object has no attribute 'get'
    labelle = Label(win, text=playername).grid()
#    print(txt)

label1 = Label(win, text="Enter a name:").grid()
entry1 = Entry(win).grid()
boutonne = Button(win, text="label-it!", command=lambda: SubmitName())
boutonne.grid()
win.mainloop()

我很高兴在这里找到一个解决方案,但所有这些“原样”的答案都不适用于我的设置python3.8、pycharm 2018.2 所以,如果有人能够回答这个问题,那么entry1.get()似乎不能用作字符串。我首先想把它添加到一个列表中,我做了一个更简单的版本来指出问题:

from tkinter import *
import pickle

win = Tk()
win.geometry("300x300")
#playername = StringVar()

def SubmitName():
    labell = Label(win, text="Little tryup").grid()
    playername = entry1.get()
    # result about line 11: 'NoneType' object has no attribute 'get'
    labelle = Label(win, text=playername).grid()
#    print(txt)

label1 = Label(win, text="Enter a name:").grid()
entry1 = Entry(win).grid()
boutonne = Button(win, text="label-it!", command=lambda: SubmitName())
boutonne.grid()
win.mainloop()

呜呼!谢谢你,帕维兹,明白了。无论我走到哪里,答案都略有不同,但并不一致,非常感谢。呜呜!谢谢你,帕维兹,明白了。无论我走到哪里,答案都略有不同,但并不一致,非常感谢。