我目前正在创建一个带有gui的程序,该程序打开一个带有几个按钮的主屏幕,然后是需要填充数据的相当多的单元格(设置为空白标签小部件) .

几个按钮将打开一个新窗口并提示用户将数据输入到条目小部件中 . 然后我想获取这些数据并将其插回到主屏幕上的标签小部件中 .

经过大量的搜索和尝试后,我最终确定我可以设置StringVar()变量,这些变量设置为主页面上标签上的文本变量 .

这个问题就是创建了大量的变量,这些变量必须在主屏幕的父类中声明为全局可变量,以及在第二个屏幕上按下按钮以设置数据时运行的函数进入主屏幕标签 .

此代码在此处设置父类中的变量:

global wgentry
    global woentry
    global dentry
    global tidentry
    global aventry
    global aaentry
    global bventry
    global baentry
    global cventry
    global caentry

    wgentry = tk.StringVar() 
    woentry = tk.StringVar()
    dentry = tk.StringVar()
    tidentry = tk.StringVar()
    aventry = tk.StringVar()
    aaentry = tk.StringVar()
    bventry = tk.StringVar()
    baentry = tk.StringVar()
    cventry = tk.StringVar()
    caentry = tk.StringVar()

    wgentry.set(returnlist[0])
    woentry.set(returnlist[0])
    dentry.set(returnlist[0])
    tidentry.set(returnlist[0])
    aventry.set(returnlist[0])
    aaentry.set(returnlist[0])
    bventry.set(returnlist[0])
    baentry.set(returnlist[0])
    cventry.set(returnlist[0])
    caentry.set(returnlist[0])

然后在按钮按下功能中运行此代码以更改值 .

global wgentry
    global woentry
    global dentry
    global tidentry
    global aventry
    global aaentry
    global bventry
    global baentry
    global cventry
    global caentry

    wgentry.set(workgroupentry.get())
    woentry.set(workorderentry.get())
    dentry.set(dateentry.get())
    tidentry.set(transidentry.get())
    aventry.set(avoltageentry.get())
    aaentry.set(aangleentry.get())
    bventry.set(bvoltageentry.get())
    baentry.set(bangleentry.get())
    cventry.set(cvoltageentry.get())
    caentry.set(cangleentry.get())

我试图减少我的代码以使某些工作能够发布,但一直没有成功,但我只是想知道是否有更好的方法在GUI上进行文本更新 . 也许有一种不同风格的小部件可以更容易更新,或者如果可能有一个类似于StringVar()的函数适用于列表,并且可以简单地引用列表中的某个项目 . 因为这是该计划的一部分,所以当我进一步推进该计划时,我将不得不这样做 .

谢谢

此图像是用户将数据放入
enter image description here
的弹出窗口

当必须插入来自用户的输入数据时,这是主屏幕
enter image description here