Tkinter报错TypeError: get()缺少位置参数index1问题排查
错误根因及修复方案
报错的核心原因是你搞混了Tkinter中Entry单行输入框和Text多行文本框的方法调用规则,之前加参数改错了组件,根本没给真正触发报错的方法传参。
具体错误点:
- 触发报错的是
comment.get()这行:comment是Text组件,它的get()方法要求必须传入起始索引、结束索引两个位置参数,你这里没有传任何参数,才会抛出缺少参数的异常。你之前尝试给get方法加1.0、end-1c这类参数,全加在了test组件上,完全改错了对象。 - 不止get方法,你后续的delete清空方法也写反了参数规则,就算解决了get的报错,清空输入框时也会触发同类错误,两类组件的方法规则如下:
Entry单行输入框(对应代码里的fullname、test):get()无需传参,直接调用即可获取全部输入内容- 清空内容调用
delete(0, 'end')
Text多行文本框(对应代码里的comment):get()必须传两个索引参数,获取全部有效内容用get('1.0', 'end-1c')即可,end-1c会自动忽略文本框末尾自动追加的多余换行符- 清空内容调用
delete('1.0', 'end')
修正后的SaveData函数代码如下,直接替换原函数即可:
def SaveData(): msg = conn.Add(fullname.get(), SpanGender.get(), comment.get('1.0', 'end-1c'), test.get()) fullname.delete(0, 'end') comment.delete('1.0', 'end') test.delete(0, 'end') showinfo(title='Add Info', message=msg)
额外提一个无关报错的小问题:你写样式配置时,循环列表里的TRadioutton拼写错误,正确写法是TRadiobutton,少写了一个字母b,会导致单选按钮的样式配置不生效,顺手修正即可。
内容的提问来源于stack exchange,提问作者Muhammad Al Azzreen
相关产品推荐
相关产品推荐

