我正在用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
中需要字符串数据类型作为参数。从用户读取的数据是否可以采用字符串数据类型?
答案 0 :(得分:0)
考虑以下代码:
string1=str(content.get)
在上面,您没有调用get
方法,只是在提供名称。 get
是一个方法,就像任何python方法一样,您必须使用括号来调用该函数。另外,也不需要将其转换为字符串,因为get
方法将返回一个字符串:
string1 = content.get()
如果要在条目上调用方法并删除对StringVar
的依赖关系,则可以通过类似的方式进行操作:
string1 = e1.get()