-1

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

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

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

此代码有效

elif inp == 'add':
        abbr_in = input('acronym: ')
        text_in = input('expanded text: ')
        acronyms[abbr_in] = text_in
        with open('acronym_dict.py','w')as outfile:
            outfile.write(str(acronyms))
            outfile.close()

elif inp == 'delete':
         name = input("Enter acronym to delete: ").upper()
         r =dict(acronyms)

          del r[name]                 

            with open('acronym_dict.py','w')as outfile:
                outfile.write(str(r))
                outfile.close()

和不起作用的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'

请有人来帮助我。不明白该怎么做。谢谢

4

1 回答 1

0

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

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

...那么这意味着您正在调用类似的函数,something.get()但您已将某些内容定义为def something(self). 因此,请跟踪哪个函数调用引发此错误以找到您的问题。我的猜测是你有一些变量,你认为它是一个字典,但实际上是一个类的实例。

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

variable = tkinter.StringVar

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

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

variable = tkinter.StringVar()
于 2013-04-30T10:53:35.103 回答