下面的代码(没有全部显示)是我第一次尝试使用类。我试图主要传递变量框,因为我希望从 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()' 必须以 Start 实例作为第一个参数来调用(取而代之的是 str 实例)。