Python字典在tkinter和nonGUI中添加/删除项

2024-09-26 18:07:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试实现一个原始字典来查找我们在实验室中使用的首字母缩略词。词典的格式是:

{'REN': 'plasma renin', 'PROP': 'procollagen III', 'IMETAB': 'intermediary metabolites, pyruvate, lactate, beta-OH-butyrate'...}

我可以用GUI和其他格式在字典上搜索条目,但是在尝试添加/删除条目时会出错,但只能使用GUI格式。 下面是两段有问题的代码:

这个代码有效

^{pr2}$

以及不起作用的GUI代码:

def add_acronym(): 
add_del_acronym.get()
add_del_acronym.upper()
abbr_in = addordel_acronym
add_expansion.get()
text_in = add_expansion
acronyms[abbr_in] = text_in
# write amended dictionary
with open('acronym_dict.py','w')as outfile:
    outfile.write(str(acronyms))
    outfile.close()
def remove_acronym():
    name = addordel_acronym.get().upper()
    name.upper()
    r =dict(acronyms)
    del r[name] 
    # write amended dictionary   
    with open('acronym_dict.py','w')as outfile:
        outfile.write(str(r))
        outfile.close()

我得到的错误是:

TypeError: get() missing 1 required positional argument: 'self'

有人能来帮我吗。不知道该怎么办。 谢谢


Tags: 代码nameinaddget字典格式gui
1条回答
网友
1楼 · 发布于 2024-09-26 18:07:04

您给出的错误消息与tkinter无关。当您收到一条错误消息:

TypeError: get() missing 1 required positional argument: 'self'

。。。这意味着您正在调用一个类似something.get()的函数,但是您定义了def something(self)。所以,跟踪哪个函数调用抛出了这个错误,以找到您的问题。我的猜测是你有一些变量,你认为它是一个字典,但实际上是一个类的实例。在

根据对这个问题原始版本的评论,您似乎错误地使用了tkinterStringVar类。你显然是在这样做:

^{pr2}$

这将导致您将一个分配给variable,而不是将类的实例分配给variable。该类定义了一个名为get的方法,但它需要self参数,该参数告诉类您正在引用哪个实例。由于您没有引用实例,self是未定义的,因此您将得到您报告的错误。在

要解决问题,必须创建StringVar的实例,如下所示:

^{3}$

相关问题 更多 >

    热门问题