Самостоятельная ошибка Python Tkinter - PullRequest
0 голосов
/ 06 июля 2018

это, наверное, что-то действительно тривиальное.

Я получаю следующую ошибку.

"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 голосов
/ 08 июля 2018

Я понял это. Оказалось, меня смутили область действия переменной 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()

Приложение класса (тк.Фрейм):

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 ': Основной () * 1 016 *

0 голосов
/ 06 июля 2018

Это простой очень простой ответ, все что вам нужно сделать, это изменить строку с ошибкой на

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

Это точно то же самое, за исключением того, что было сказано final() Я изменил его на final(self), тогда он работал нормально!

Надеюсь, это поможет!

...