1

次のコード (すべては示していません) は、クラスを使用する最初の試みです。Tkinter の Entry ウィジェットから値を取得したいので、主に変数ボックスを渡そうとしています。

クラスを機能させた可能性がありますが、Tkinter ウィジェットの「コマンド」によって内部から定義を呼び出すのが困難です。

私の書き方の悪いクラス コードのどこが間違っているのか、ボックスの値を取得できるかどうかを誰かが説明してくれたら、とてもうれしいです。

これが以前の質問の繰り返しである場合は申し訳ありません。

class Start():
    def ChoiceBox(self, choice):


        column = 0
        if choice == "Fixed":
            choice_frame.grid_forget()      
            tkMessageBox.showinfo("Message", "No optimisation, value fixed.")
        elif choice == "List":
            i = [0, 1, 2, 3]

            for i in i:
                choice_title = Label(choice_frame, text='Value %g'% float(i+1), bg='white', borderwidth=0, width=0)
                choice_title.grid(row=0, column=column+i, sticky="nsew", padx=1, pady=1)

                self.box = Entry(choice_frame, bg='white', borderwidth=0, width=0)
                self.box.grid(row=1, column=column+i, sticky="ew", padx=1, pady=1)

                tkMessageBox.showinfo("Message", "Please fill in list values.")


        elif choice == "Interval" or "Optimisation":
            i = [0, 1]
            choice_title1 = Label(choice_frame, text='Min Value', bg='white', borderwidth=0, width=0)
            choice_title1.grid(row=0, column=column, sticky="nsew", padx=1, pady=1)
            choice_title2 = Label(choice_frame, text='Max Value', bg='white', borderwidth=0, width=0)
            choice_title2.grid(row=0, column=column+1, sticky="nsew", padx=1, pady=1)
            for i in i:
                box = Entry(choice_frame, bg='white', borderwidth=0, width=0)
                box.grid(row=1, column=column+i, sticky="nsew", padx=1, pady=1)
                tkMessageBox.showinfo("Message", "Enter Min/Max values.")


    def StartBut(self):
    if self.box.get() == "":
            pass
        else:
            value = self.box.get()

list1 = OptionMenu(frame_table, variablelist, 'Fixed', 'List', 'Interval', 'Optimisation', command=Start.ChoiceBox)

but1 = Button(frame_but, text='Start', command=Start.StartBut)

更新: エラーが発生しました: 'unbound method 'ChoiceBox()' must be called with Start instance as first argument (代わりに str インスタンスを取得しました)。

4

1 に答える 1

2

def ChoiceBox(choice):これは次のようになりますdef ChoiceBox(self, choice)

Python クラスがどのように機能するかについては、こちらを参照してください。

于 2012-06-26T08:53:38.597 に答える