while 循环根据计数创建输入框
while loop to create entry boxes based on count
谁能帮我理解为什么我的 while 循环没有打印我想要的内容?
我的代码创建了一个带有指定数量标签的 tkinter window。然后它应该创建相同数量的输入框。它同时执行这两项操作。
如果我打印 part_number 变量,它会按预期打印:“第 1 部分”、“第 2 部分”、“第 3 部分”。等等
如果我打印入口变量 returns: ".!entry", ".!entry1", ".!entry2", etc 它应该打印 "part_entry1", " part_entry2", "part_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()
主要问题是您试图动态创建变量(并且做错了),但这几乎总是一个糟糕的主意(参见 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()
谁能帮我理解为什么我的 while 循环没有打印我想要的内容?
我的代码创建了一个带有指定数量标签的 tkinter window。然后它应该创建相同数量的输入框。它同时执行这两项操作。
如果我打印 part_number 变量,它会按预期打印:“第 1 部分”、“第 2 部分”、“第 3 部分”。等等
如果我打印入口变量 returns: ".!entry", ".!entry1", ".!entry2", etc 它应该打印 "part_entry1", " part_entry2", "part_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()
主要问题是您试图动态创建变量(并且做错了),但这几乎总是一个糟糕的主意(参见 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()