2

私はPythonを学んでいて、tkinterのクラスデコレータのように見える問題に直面しています。Frameで装飾しようとしない限り、tkinterを動作させることができます。以下のコードでは、エラーもウィンドウも表示されません。何らかの理由で、私が定義するクラスは決して定義されません。以下は私のコードです。その下には、tkinterに関する同様の質問に基づいて私が行ったテストがあります。

>>> from tkinter import *
import tkinter
class Apples:
    def __init__(self, master):
        frame = Frame(master)
        frame.pack()
        self.button = Button(frame, text="Quit", fg="blue", command=frame.quit)
        self.button.pack(side=LEFT)
        self.hellos = Button(frame, text="Hello", command=self.say_hello)
        self.hellos.pack(side=LEFT)
    def say_hello(self):
        print("Hello World!")
root = Tk()
app = Apples(root)
root.mainloop()

ウィンドウは表示されません。エラーはありません。だから私はクラスをチェックします...

>>> test = Apples(root)
Traceback (most recent call last):
  File "<pyshell#54>", line 1, in <module>
    test = Apples(root)
NameError: name 'Apples' is not defined
>>> 

同様の質問をPythonGUIでボタンを作成して見つけ、 pythonManからコードを試しました。私はまだ同じクラス宣言の問題に直面しています。

>>> from tkinter import * 

class Application(Frame):
"""A GUI application with three button"""

def __init__(self,master):
    self.master = master
    self.create_widgets()



def create_widgets(self):
    #"""Create three buttons"""
    #Create first buttom
    btn1 = Button(self.master, text = "I do nothing")
    btn1.pack()

    #Create second button
    btn2 = Button(self.master, text = "T do nothing as well")
    btn2.pack()

    #Create third button
    btn3=Button(self.master, text = "I do nothing as well as well")
    btn3.pack()

root = Tk()
root.title("Lazy Button 2")
root.geometry("500x500")
app = Application(root)
root.mainloop()
>>> Application
Traceback (most recent call last):
  File "<pyshell#58>", line 1, in <module>
    Application
NameError: name 'Application' is not defined
>>> 

何かが正しく宣言されていないと思いますが、構文エラーは発生していません。どんな助けでも大歓迎です。

4

2 に答える 2

1

">>>"記号は必要ないと思います。

「Tkinterインポートから*」

于 2013-06-27T17:51:21.607 に答える
0

質問の 2 番目の部分でコードが適切に再現されていると仮定すると、クラスを正しく定義していません。とdef __init__同じレベルのインデントがありclass Application(Frame)ます。メソッドをクラスの一部にするには、メソッドをインデントする必要があります。

あなたの質問の最初の部分のコードは私にとってはうまくいきます。

于 2012-12-06T17:39:11.200 に答える