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

fcwjkofz  于 2021-09-08  发布在  Java
关注(0)|答案(1)|浏览(467)

有人能帮我理解为什么我的while循环没有打印我想要的内容吗?
我的代码使用指定数量的标签创建tkinter窗口。然后,它应该创建相同数量的输入框。这两个都有。
如果我打印part_number变量,它会按预期打印:“part 1”、“part 2”、“part 3”。等
如果我打印输入变量,它将返回:“.”。!条目“,”。!入口1“,”。!应打印“part_entry1”、“part_entry2”、“part_entry3”的条目2”等。等
谢谢你的帮助。

  1. from tkinter import *
  2. main = Tk()
  3. main.title('Job Logger')
  4. main.geometry("850x750")
  5. '''''''''
  6. def submit():
  7. a = part_entry1.get()
  8. #b = part_entry2.get()
  9. #c = part_entry3.get()
  10. print(a)
  11. #print(b)
  12. #print(c)
  13. '''
  14. count = 0
  15. x = 50
  16. y = 30
  17. x2 = 150
  18. while count < 3:
  19. part_number = ('Part ' + (str(count + 1)))
  20. Label(main, text=part_number).place(x = x, y = y)
  21. entry = ('part_entry' + (str(count + 1)))
  22. entry = Entry(main)
  23. entry.place(width=120, x=x2, y=y)
  24. y += 30
  25. count += 1
  26. print(part_number)
  27. print(entry)
  28. '''''''''
  29. Button(main, text="Submit Run info", command=submit).place(width=100, x=375, y=200)
  30. '''
  31. mainloop()
h9a6wy2h

h9a6wy2h1#

主要的问题是你试图动态地创建变量(而且做得不对),然而这几乎总是一个糟糕的主意(看看我如何创建变量?)。我建议你把 Entry 控件,并在回调函数中引用它。我的意思是:

  1. from tkinter import *
  2. main = Tk()
  3. main.title('BTD Job Logger')
  4. main.geometry("850x750")
  5. def submit():
  6. for i, entry in enumerate(part_entries, start=1):
  7. print(f'part entry {i}: {entry.get()!r}')
  8. NUM_PARTS = 3
  9. x = 50
  10. y = 30
  11. x2 = 150
  12. part_entries = [] # List of Entry widgets.
  13. for i in range(NUM_PARTS):
  14. part_number = 'Part ' + str(i + 1)
  15. Label(main, text=part_number).place(x=x, y=y)
  16. entry = Entry(main)
  17. part_entries.append(entry)
  18. entry.place(width=120, x=x2, y=y)
  19. y += 30
  20. Button(main, text="Submit Run info", command=submit).place(width=100, x=375, y=200)
  21. mainloop()
展开查看全部

相关问题