如何在tkinter

时间:2019-01-14 16:16:58

标签: python tkinter

我正在用tkinter GUI创建一个Python程序。我正在从用户那里阅读文本,旨在将阅读的文本用作进一步功能的参数。但是这些功能要求文本为“字符串”数据类型,而不是“类方法”(如果我使用.get()函数,则会出现这种情况。

我已经使用Entry小部件命令来读取StringVar()并将其用作变量。 我在str(content.get)函数中尝试了parse1(),但这不起作用

def parse1():

    string1=str(content.get)

    try:
        txt = TextBlob(string1) #TextBlob is a function used for string processing
        for sentence in txt.sentences:
            genQuestion(sentence)       
    except Exception as e:
        raise e

Label(window, text="Text").grid(row=0)
content = StringVar()
e1 = Entry(window, textvariable=content)
e1.grid(row=0, column=1)
Button(window, text='Quit', command=window.quit).grid(row=3, column=0, sticky=W, pady=4)
Button(window, text='ADD', command=parse1).grid(row=3, column=1, sticky=W, pady=4)
window.mainloop()

我希望通过使用content.get()str()数据类型设置为字符串。当我尝试string1=str(content.get)时,什么也没有发生,并且程序无法继续进行。如果我尝试使用print(string1)检查是否得到:

<bound method StringVar.get of <tkinter.StringVar object at 0x000001D17418B710>> 

而不是输入的文本,这就是我考虑使用str()的原因。 我尝试没有str()的情况下得到了

Exception in Tkinter callback Traceback (most recent call last):   File "C:\Users\Tejas Jambhale\Anaconda3\lib\tkinter\__init__.py", line 1699, in __call__
    return self.func(*args)   File "C:/Users/Tejas Jambhale/Documents/genquest-master/quest.py", line 165, in parse1
    raise e   File "C:/Users/Tejas Jambhale/Documents/genquest-master/quest.py", line 159, in parse1
    txt = TextBlob(string)   File "C:\Users\Tejas Jambhale\Anaconda3\lib\site-packages\textblob\blob.py", line 370, in
__init__
    'must be a string, not {0}'.format(type(text))) TypeError: The \`text\` argument passed to \`__init__(text)\` must be a string, not <class 'method'>

,这意味着在TextBlob中需要字符串数据类型作为参数。从用户读取的数据是否可以采用字符串数据类型?

1 个答案:

答案 0 :(得分:0)

考虑以下代码:

string1=str(content.get)

在上面,您没有调用get方法,只是在提供名称。 get是一个方法,就像任何python方法一样,您必须使用括号来调用该函数。另外,也不需要将其转换为字符串,因为get方法将返回一个字符串:

string1 = content.get()

如果要在条目上调用方法并删除对StringVar的依赖关系,则可以通过类似的方式进行操作:

string1 = e1.get()