当用户继续更改TKin中的值(使用trace方法)时,使用Entry并更新输入的条目

2024-10-01 16:26:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在学习Python并开始学习如何使用tkintergui。我正在做一个小的接口,做一些简单的统计分析,比如STDEV,T-tests,等等。我在一个类中有这个方法,它基本上得到了要处理的数据。你知道吗

我希望用户能够输入尽可能多的数据条目(我的意思是只要计算机可以处理)。我遇到的问题是——我想当我对一个条目使用方法.get()时,不会返回一个?你知道吗

我还使用DoubleVar()的method.trace()来跟踪使用以下方法更新条目值的时间:

Python Tkinter update when entry is changed

我觉得这很有道理,但对我没用。每当我在TK界面中更改一个框时,所有其他框都会更改,但是用于计算标准偏差的值不是显示在输入框上的数字(无论如何都是相同的)。你知道吗

代码如下:

等级标准差: """ 运行标准的去离子计算。 “”“

def __init__(self) -> None:
    """
    Initializes an instance of the functions!
    """
    self.stdev_pop = Button(top_frame,
                            text="Calculate the population "
                                 "standard deviation of the data set")
    self.stdev_pop.bind("<Button-1>", self.show_result_population)
    self.stdev_pop.pack()
    stdev_samp = Button(top_frame,
                        text="Calculate the sample "
                             "standard deviation of the data set")
    stdev_samp.bind("<Button-1>", self.show_result_sample)
    stdev_samp.pack()
    self.data = []
    self.enter_data = Button(top_frame, text="Enter data")
    self.enter_data.bind("<Button-1>", self.pack_add_entry_button)

    self.add_entry = Button(top_frame, text="Add data entry",
                            command=self.add_new_entry)
    self.enter_data.pack()
    self.all_entries = {}
    self.tracer = DoubleVar()
    self.tracer.trace("w", self.update)

def pack_add_entry_button(self, *args) -> None:
    """
    Pack the add_entry button.
    """
    self.add_entry.pack()

def update(self, *args) -> None:
    """
    Update the values of the entries.
    """
    global update_in_progress
    if update_in_progress:
        return
    update_in_progress = True
    data = [str(self.all_entries[item]) for item in self.all_entries]
    self.data = [int(item) for item in data if item.isnumeric()]
    update_in_progress = False

def add_new_entry(self):
    """
    Add a new entry.
    """
    new_entry = Entry(root, textvariable=self.tracer)
    new_entry.pack()
    new_entry_data = new_entry.get()
    self.all_entries[new_entry] = new_entry_data 

我不知道我错在哪里如果有人能帮我我会很感激的。谢谢您!你知道吗


Tags: oftheinselfaddnewdatadef
1条回答
网友
1楼 · 发布于 2024-10-01 16:26:47

没有办法运行你发布的代码,因为缩进是关闭的,一些按钮调用不存在的函数,所以这是一个标准的跟踪程序,显示如何使用与跟踪相关联的tkinter变量(在这种情况下是StringVar)来获取内容。你知道吗

import tkinter

def text_changed(*args):
    print(tk_name.get())

top = tkinter.Tk()

tk_name=tkinter.StringVar()
tk_name.set("nothing")
tk_name.trace("w", text_changed)

tkinter.Label(top, textvariable=tk_name).grid(row=0, column=1)

entry_1 = tkinter.Entry(top, textvariable=tk_name)
entry_1.grid(row=1, column=1, sticky="W")
entry_1.focus_set()

top.mainloop()

相关问题 更多 >

    热门问题