如何使用tkinter Entry小部件?

时间:2018-11-06 18:11:57

标签: python class tkinter tkinter-entry

我正在尝试在基于products的GUI中插入def some_view(request): form = OrderForm(products=['product A', 'product B']) # ... # return some HttpResponse字段。 它具有三个不同的“页面”作为带有按钮等的类,但是Entry字段不起作用。

我想将输入字段放在最后一页(tkinter)中。然后,我只想单击其中一个检查按钮,如果输入的文本将显示为打印,或者在GUI的另一个文本字段中,我将确定。 更新:我将输入代码更改为Entry 并制作了一个按钮class PageTwo

我得到的错误代码是:

controller.wordde = Entry(self)

这是代码:

print(controller.wordde.get())

1 个答案:

答案 0 :(得分:0)

您必须将条目存储在某处,以便以后可以引用它。

对于您的代码,似乎最好的存储位置是在控制器中,因为它可以在所有页面上访问:

代替worden = Entry(self)使用:

controller.worden = Entry(self)

这将在控制器对象中存储对您的输入实例的引用。稍后,您可以使用controller.worden.get()来检索值:

print(controller.worden.get())

编辑:为了澄清-controller是在此处创建的SeaofBTCapp类的实例:

app = SeaofBTCapp()

该实例在此处传递给其他类的__init__

for F in (StartPage, PageOne, PageTwo):
    frame = F(container, self)  # self is the controller

现在,由于您将需要使用非controller以外的其他方法访问__init__,因此您还必须在这些类的实例中存储对控制器的引用。

更改__init__StartPagePageOne类中的PageTwo,以执行以下操作:

def __init__(self, parent, controller):
    tk.Frame.__init__(self, parent)
    self.controller = controller
    #.... rest of the method here ...

这意味着每个页面实例都有对作为属性存储的controller的引用。现在,在那些不是__init__的类的方法中,您可以使用self.controller访问该对象:

def checkybutton2(self):
    print(self.controller.wordde.get())