【问题标题】:Not able to access list in another window in tkinter python无法在 tkinter python 的另一个窗口中访问列表
【发布时间】:2020-05-18 07:02:42
【问题描述】:
from tkinter import *
root=Tk()
root.title("")
#root.geometry("500x500")
global c
c=[]
def new():
    win=Toplevel()
    win.title("")
    for i in range(0,25):
        name=Label(win,text=str(c[i]),bg='#ADD8E6',fg='white',width=20)
        name.grid(column=1,row=i)
for i in range(1,26):
    name=Label(root,text='enter name of team'+str(i),bg='#ADD8E6',fg='white',width=20)
    name.grid(column=1,row=i)
    entry=Entry(root,bg='white',fg='black')
    entry.grid(column=2,row=i)
    c.append(entry.get())
submit=Button(root,text='Submit',bg='red',fg='white',command=new)    
submit.grid(column=1,row=26,columnspan=3)
root.mainloop()

在第一个窗口中从不同的框中输入输入后,它不会在需要时在第二个窗口中输入相同的名称。它只是发送一个带有指定 bgcolor 的窗口

请帮助

【问题讨论】:

    标签: python tkinter tkinter-entry


    【解决方案1】:

    您没有获得正确值的原因是,当程序运行时,Entry 小部件默认为空,因此列表没有值,当按下按钮时,它。在第二个窗口中显示标签text = ""

    要解决此问题,动态获取Entry 小部件的值 意味着在按下按钮时获取值。您可以将每个Entry 小部件存储到一个列表中,然后在new 函数中访问它们。

    在您的代码中,您只需要更改两行。

    1. c.append(entry.get()) 更改为 c.append(entry)
    2. new 函数中,将标签name"text" 的参数值从text=str(c[i]) 更改为text=str(c[i].get())

    【讨论】:

    • tnx 很多 .. 像魅力一样工作
    • 它工作了,但仍然很好奇为什么它不能反过来工作??
    • @PracticalJoker:我已经在回答中解释过了。无论如何,这是因为当 Entry 小部件为空时,您在运行时获取它们的值,这发生在 Tkinter 窗口可见之前。因此将 Entry 小部件存储在列表中,然后可以在程序期间访问。
    猜你喜欢
    • 2021-05-19
    • 1970-01-01
    • 2021-09-24
    • 2018-05-18
    • 2018-05-11
    • 1970-01-01
    • 1970-01-01
    • 2015-11-19
    • 1970-01-01
    相关资源
    最近更新 更多