0

現在のクラスの外部から関数を呼び出そうとしていますreset(これは最終的に複数のクラスでリセットを呼び出します) が、取得しているのは、そのクラス内の関数だけではなく、完全なクラスを再度実行しているプログラムのようです。

何が起こっている?

from tkinter import *

root = Tk()

class Scores1(Frame):
    def __init__(self, parent=None, **kw):
        Frame.__init__(self, parent, kw)
        self.team1 = 888
        self.team1str = StringVar()
        self.teamA()

    def teamA(self):
        self.team1str.set('%03d' % (self.team1))
        t1 = Label(textvariable=self.team1str, font=("Digiface", 120), fg='#fffd80000', bg='black')
        t1.grid()

    def ScoreA1(self):
        self.team1 = self.team1 + 1
        self.team1str.set('%03d' % (self.team1))

    def Reset(self):
        self.team1 = 0
        self.team1str.set('%03d' % (self.team1))

class Resetter(Frame):
    def __init__(self, parent=None, **kw):
        Frame.__init__(self, parent, kw)

    def reset(self):
        Scores1().Reset


def main():


    sc1 = Scores1(root)
    sc1.grid(row=0, column=0)
    res = Resetter(root)

    sc1.configure(highlightbackground='white', highlightthickness=2)
    root.configure(background = 'black')

    Button(root, text='Team A +1', command=sc1.ScoreA1).grid(row=1, column=0)
    Button(root, text='ResetInside', command=sc1.Reset).grid(row=2, column=0)
    Button(root, text='ResetOutside', command=res.reset).grid(row=3, column=0)

    root.mainloop()

if __name__ == '__main__':
    main()
4

1 に答える 1

1

まず、コードにタイプミスがあります。

Scores1().Reset

の新しいインスタンスを作成しScores1、メソッドを返しますReset。実際に呼び出すResetには、 を追加します()

次の問題はScores1()、新しいインスタンスを作成することです。しかし、あなたは電話Reset()したいですsc1。解決策はに渡すsc1ことResetterです:

class Resetter(Frame):
    def __init__(self, sc1, parent=None, **kw):
        Frame.__init__(self, parent, kw)
        self.sc1 = sc1
    ...

    def reset(self):
        self.sc1.Reset()

res = Resetter(sc1, root)
于 2013-10-17T08:36:19.990 に答える