确定tkinter UI类属性是否已从外部模块更改的最佳方法是什么?

2024-04-29 12:25:31 发布

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

我目前正在开发一个模块化的神经网络程序,它有一个tkinterui模块,一个神经网络模块和一个允许两者通信的“主”模块。你知道吗

问题是,我需要从UI类属性中检索一个网络参数列表(以便实例化神经网络类),但只有在更新之后(通过用户与小部件的交互)。你知道吗

基于parameters = []是否运行的while循环是不可行的,因为据我所知,没有办法在没有多线程的情况下同时更新窗口,但是Tkinter不是线程安全的。你知道吗

对于任何技术上的错误,我深表歉意,我对编程和它的行话还比较陌生。你知道吗

用户界面

train = Button(self.parameterframe, text="Train", command=lambda: self.train())
        train.place(x=257, y=150)

    def train(self):

        parameters = [self.epochs.get(), self.layer1neurons.get(),
                      self.layer2neurons.get(), self.batchsize.get(),
                      self.learningrate.get()]

        for p in parameters:

            try:

                if p == self.learningrate.get():
                    float(p)
                else:
                    int(p)

            except ValueError:

                messagebox.showerror(title="Error", message="Please ensure that all parameters are of the correct type.")
                return

        self.parameters = parameters

主.py

def refresh():
    root = Tk()
    interface = UI.create_ui(root)
    while True:
        root.update()
        time.sleep(0.1)

thread = thread.Thread(target=refresh())
thread.start()

#Then a while  loop for retrieving parameters followed by a .join() statement.

请注意,上面的代码纯粹是实验性的,只是想让您了解我要实现的目标。你知道吗


Tags: 模块selfuiforgetdeftrain神经网络