使用Tkinter和Python 3访问LabelFrames中的子级

时间:2018-12-23 22:39:48

标签: python-3.x tkinter

我正在与tkinter合作,并为我的项目设置了简单的应用程序。我的目标是从tk.Entry()中的tk.LabelFrame()中检索一个值(在此代码中groupbox引用的变量中)。按钮找到groupbox,代码也通过编译器。我想我的问题是:如何在LabelFrame中访问小部件及其值?

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import tkinter as tk


class Application(tk.Frame):
    def __init__(self, master=None):
        tk.Frame.__init__(self, master)
        self.master.title("Application Title")

        # Introduce LabelFrame
        self.groupbox = tk.LabelFrame(self, text="Parameters")
        self.groupbox.grid(row=0, column=1, padx=5, pady=5)

        # Test Label & Entry Widget
        label = tk.Label(self.groupbox, text="label=")
        label.grid(row=0, column=0, sticky="W")
        entry = tk.Entry(self.groupbox)
        entry.insert(0, default_value)
        entry.grid(row = 0, column=1)

        # Compile Button
        button = tk.Button(self.groupbox, text="Compile", command=self.compile)
        button.grid(row=1, column=1)

    # Retrieve first Value (second Widget) from LabelFrame
    def compile(self):
        print(self.groupbox.entry.get(1))

if __name__ == '__main__':
    figure = Application()
    figure.pack()
    figure.mainloop()

之所以这样做,是因为我想根据由按钮单击触发的tk.Entry()值执行一些计算,该按钮包含在上述代码段建议的相同LabelFrame()中(在原始代码中代码中有很多小部件,但这本质上是我当前问题的要点)。

1 个答案:

答案 0 :(得分:1)

entry更改为self.entry

class Application(tk.Frame):
    def __init__(self, master=None):

        ....
        self.entry = tk.Entry(self.groupbox)
        self.entry.insert(0, "default_value")
        self.entry.grid(row = 0, column=1)
        ...

    # Retrieve first Value (second Widget) from LabelFrame
    def compile(self):
        print(self.entry.get())