python tkinter自错误

时间:2018-07-06 08:05:16

标签: python object tkinter self

这可能真的很琐碎。

我遇到以下错误。

"self.d = {'Roosevelt Bridge': {"Monday": final()}}
TypeError: final() missing 1 required positional argument: 'self'"

如果我跳过字典,其他所有内容都可以正常工作而不会出错。我不知道如何将字典类型对象添加到tkinter中。

感谢您的澄清。

import tkinter as tk


def main():

    root = tk.Tk()
    root.title("class basic window")
    root.geometry("250x350")
    root.config(background="LightBlue4")
    app = Application(root)
    root.mainloop()


class Application(tk.Frame):

    def __init__(self, parent):
        tk.Frame.__init__(self, parent, bg="ivory2", bd=2, 
        relief=tk.RAISED)
        self.parent = parent
        self.pack(fill=tk.BOTH, expand=1)
        self.initUI()


    def initUI(self):
        self.grid()


        self.optionList=["", "repair", "boat crossing", "mechinical   
                         issue", "accident"]
        self.dropVar=tk.StringVar()
        self.dropVar.set(self.optionList[0])
        self.dropMenu=tk.OptionMenu(self, self.dropVar,      
                      *self.optionList)
        self.dropMenu.config(width=10)
        self.dropMenu.pack()


        self.get=tk.Button(self, text="update", command=self.final)
        self.get.pack()
        #self.pack(fill=t.BOTH, expand=1)


    def final(self):

        if self.dropVar.get()==self.optionList[0]:
            return ("1")

        else:
            return ("0")

        self.d = {'Roosevelt Bridge': {"Monday": final()}}

        print (self.d)

if __name__ == '__main__':
    main()

2 个答案:

答案 0 :(得分:0)

这是一个非常的简单答案,您所要做的就是将错误所在的行更改为

self.d = {'Roosevelt Bridge': {"Monday": final(self)}}

除了说final()我将其更改为final(self)之外,事实还是一样!

希望这会有所帮助!

答案 1 :(得分:0)

我知道了。原来我对变量d的范围和函数final感到困惑。这是按我想要的方式工作的代码。感谢您的提问和我的学习贡献。

import tkinter as tk

D = {'罗斯福桥':{“星期一”:1}}

def main():

root = tk.Tk()
root.title("class basic window")
root.geometry("250x350")
root.config(background="LightBlue4")
app = Application(root)
root.mainloop()

类应用程序(tk.Frame):

def __init__(self, parent):
    tk.Frame.__init__(self, parent, bg="ivory2", bd=2, relief=tk.RAISED)   
    self.parent = parent
    self.pack(fill=tk.BOTH, expand=1)
    self.initUI()


def initUI(self):
    self.grid()


    self.optionList=["", "repair", "boat crossing", "mechinical issue", "accident"]
    self.dropVar=tk.StringVar()
    self.dropVar.set(self.optionList[0])
    self.dropMenu=tk.OptionMenu(self, self.dropVar, *self.optionList)
    self.dropMenu.config(width=10)
    self.dropMenu.pack()

    self.get=tk.Button(self, text="update", command=self.update)
    self.get.pack()
    #self.pack(fill=t.BOTH, expand=1)


def final(self):

    if self.dropVar.get()==self.optionList[0]:
        return ("1")

    else:
        return ("0")

def update(self):

    global D
    D = {'Roosevelt Bridge': {"Monday": self.final()}}
    print (D)

如果名称 =='主要”:     main()