0

これに関する記事をできるだけ多く読んでみましたが、役立つものは見つかりませんでした。私のコードでは、エントリ ウィジェットを含むクラス EntryWidget を作成しました。アプリのメイン クラス コントローラでは、self.entry というクラス EntryWidget のインスタンスを作成しました。主に入力ウィジェットからテキストを取得して操作する、ok ボタンのコマンドとなるメソッドを作成しようとしています。このコードは、メイン クラス Controller からのものです。

     def ok(self):
         self.input = self.entry.get()
         self.command = ""

エラー:

     AttributeError: EntryWidget instance has no attribute 'get'

アイデアは、テキストが入力された後、このメソッドを呼び出す [OK] ボタンが押されるというものです。これが以前に尋ねられた場合は申し訳ありませんが、他の回答を読みましたが、役に立ちません。

ありがとう

4

2 に答える 2

2

EntryWidgetクラスがサブクラス化されていない場合は、クラスのメソッドTkinter.Entryを定義する必要があります。エラーは、それはインスタンスですが、メソッドが含まれていないことを示しています。get()EntryWidgetself.entryEntryWidgetget()

于 2012-10-06T01:05:23.250 に答える
0

ユーザーが tkinter.Entry に値を入力できるようにする小さな関数を自分で作成し、関数がユーザーの入力を返します。

def getInput(title, message):
    class inputGUI(tkinter.Tk):
        def __init__(self):
            tkinter.Tk.__init__(self)
            self.title(title)
            self.l=tkinter.Label(self,text=message, width = 30, pady = 10, padx = 5).pack()
            self.e=tkinter.Entry(self, width = 30)
            self.e.pack()
            self.e.focus()
            self.gap=tkinter.Label(self,text="", width = 50, pady = 0, padx = 5).pack()
            self.b=tkinter.Button(self,text='Submit',command=self.cleanup, width = 20, pady = 10, padx = 5).pack()
            self.gap=tkinter.Label(self,text="", width = 30, pady = 0, padx = 5).pack()
        def cleanup(self):
            self.userInput=self.e.get()
            self.destroy()
    root = inputGUI()
    root.focus()
    root.wait_window(root)
    valueOut = root.userInput
    return valueOut

注: エントリの検証がないことは承知していますが、これは簡単に追加できるはずです。

于 2015-04-16T10:11:22.977 に答える