while循环根据计数创建输入框

2024-09-28 23:52:13 发布

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

有人能帮我理解为什么我的while循环没有打印我想要的内容吗

我的代码使用指定数量的标签创建tkinter窗口。然后,它应该创建相同数量的输入框。这两个都有

如果我打印part_number变量,它会按预期打印:“part 1”、“part 2”、“part 3”。等等

如果我打印条目变量,它将返回:“.!entry”、“!entry1”、“!entry2”等,其中应打印“part\u entry1”、“part\u entry2”、“part\u entry3”。等等

谢谢你的帮助

from tkinter import *

main = Tk()
main.title('Job Logger')
main.geometry("850x750")

'''''''''
def submit():
    a = part_entry1.get()
    #b = part_entry2.get()
    #c = part_entry3.get()

    print(a)
    #print(b)
    #print(c)
'''

count = 0
x = 50
y = 30
x2 = 150
while count < 3:
    part_number = ('Part ' + (str(count + 1)))
    Label(main, text=part_number).place(x = x, y = y)
    entry = ('part_entry' + (str(count + 1)))
    entry = Entry(main)
    entry.place(width=120, x=x2, y=y)
    y += 30
    count += 1
    print(part_number)
    print(entry)

'''''''''
Button(main, text="Submit Run info", command=submit).place(width=100, x=375, y=200)
'''

mainloop()


Tags: numberget数量maintkintercountplacesubmit
1条回答
网友
1楼 · 发布于 2024-09-28 23:52:13

主要的问题是您试图动态地创建变量(并且做得不对),然而这几乎总是一个糟糕的主意(请参见How do I create variable variables?)。 我建议您将Entry小部件放在一个列表中,并在回调函数中引用它。我的意思是:

from tkinter import *

main = Tk()
main.title('BTD Job Logger')
main.geometry("850x750")

def submit():
    for i, entry in enumerate(part_entries, start=1):
        print(f'part entry {i}: {entry.get()!r}')

NUM_PARTS = 3
x = 50
y = 30
x2 = 150

part_entries = []  # List of Entry widgets.
for i in range(NUM_PARTS):
    part_number = 'Part ' + str(i + 1)
    Label(main, text=part_number).place(x=x, y=y)
    entry = Entry(main)
    part_entries.append(entry)
    entry.place(width=120, x=x2, y=y)
    y += 30

Button(main, text="Submit Run info", command=submit).place(width=100, x=375, y=200)

mainloop()

相关问题 更多 >