I have been trying to figure out a way to modify the label to print element 1 to 4 in a line and repeat. I have attached a picture to hopefully clarify what I am trying to accomplish.
My goal is to make the results look like the following
1 A 2 B 3 C 4 D
1 a 2 b 3 c 4 d
JavaScript
x
53
53
1
my_entries = []
2
3
#prints the result
4
def something():
5
entry_list =''
6
index = 0
7
for entries in my_entries:
8
index+=1
9
print(entries.get() + ' ' +str(index))
10
entry_list = entry_list + str(index) + ' ' + str(entries.get()) + 'n'
11
if index == 4:
12
index = 0
13
my_label.config(text=entry_list)
14
15
#prints the element
16
print('n'+my_entries[1].get())
17
18
19
def get_value():
20
my_entries.clear()
21
value = vialEntry.get()
22
try:
23
#print(int(value))
24
return int(value)
25
except ValueError:
26
return None
27
28
#this function will create the inputs for the vials elements
29
def make_entry():
30
num = get_value()
31
print(num)
32
tk.Label(master, text = "Name ").grid(row=1, column=1)
33
tk.Label(master, text = "Time ").grid(row=1, column=2)
34
tk.Label(master, text = "Temp ").grid(row=1, column=3)
35
tk.Label(master, text = "Freq ").grid(row=1, column=4)
36
#row loop
37
for y in range(num):
38
#column loop
39
for x in range(4):
40
user_entery = Entry(master)
41
tk.Label(master, text = "Element: "+str(y+1)).grid(row=y+2, column=0, pady=5)
42
user_entery.grid(row=y+2, column=x+1, pady=0, padx=5)
43
my_entries.append(user_entery)
44
45
#end of make_entry function
46
47
my_button = Button(master, text="Click me", command=something)
48
my_button.grid(row=23, column=0, pady=20)
49
tk.Label(master, text = "Results: ").grid(row=24, column=0)
50
my_label = Label(master, text='')
51
my_label.grid(row=25, column=0, pady=0)
52
53
Advertisement
Answer
You added n
after each index/value pair. You need to add n
after 4 index/value pairs instead:
JavaScript
1
18
18
1
def something():
2
entry_list =''
3
index = 0
4
for entries in my_entries:
5
index+=1
6
print(entries.get() + ' ' + str(index))
7
entry_list += str(index) + ' ' + str(entries.get())
8
if index == 4:
9
index = 0
10
entry_list += 'n'
11
else:
12
entry_list += ' '
13
14
my_label.config(text=entry_list)
15
16
#prints the element
17
print('n'+my_entries[1].get())
18
Note that the for loop can be simplified as below:
JavaScript
1
8
1
def something_():
2
entry_list = ''
3
for i, entry in enumerate(my_entries):
4
entry_list += f'{i%4+1} {entry.get()}' + ('n' if i%4 == 3 else ' ')
5
# or one-liner
6
#entry_list = ''.join(f'{i%4+1} {entry.get()}' + ('n' if i%4 == 3 else ' ') for i,entry in enumerate(my_entries))
7
my_label.config(text=entry_list)
8