PEHDOM
Июнь 8, 2019 21:09:09
Ivansr вы подходите не с той стороны, tkinter событийно ориентированая библиотекаи работать нужно в ней стоветвенно.
def btn_click():
list_main.append([a.get(), b.get()])
root = tkinter.Tk()
a = Entry()
b = Entry()
Button(command = btn_click )
root.mainloop()
Ivansr
Июнь 8, 2019 21:19:27
PEHDOM
Ivansr вы подходите не с той стороны, tkinter событийно ориентированая библиотекаи работать нужно в ней стоветвенно.
я так и делал для одного события. Это понятно.
вопрос в том, как это реализовать в цикле, когда после каждого нажатия кнопки должны извлекаться данные из полей ввода.
затем создаются новые поля для заполнения снова с кнопкой снятия данных
если запускать в одном окне по циклу, то эти 30 итераций просто проходят одна за одной и данные снять можно только с последней. Не получается остановить программу на кнопке
PEHDOM
Июнь 8, 2019 21:35:28
Ivansr
затем создаются новые поля для заполнения снова с кнопкой снятия данных
а старые поля и кнопка куда деваються? они должны оставаться? тога като так:
def btn_click():
Global count
list_main.append([a[count].get(), b[count].get()])
count+=1
a.append(Entry())
b.append(Entry())
btn.append(Button(command = btn_click ))
root = tkinter.Tk()
a, b, btn = [],[],[]
count = 0
a.append(Entry())
b.append(Entry())
btn.append(Button(command = btn_click ))
root.mainloop()
Ivansr
Июнь 8, 2019 21:51:33
старые поля по замыслу стираются и на их месте появляются новые в цикле в том же окне Toplevel()
list = wnd2.grid_slaves()
for l in list:
l.destroy()
пробовал вставлять функцию окно2.wait_variable(список снятия данных), ожидая, что цикл продолжит работу и выведет новые поля после удаления старых, но программа не возвращается потом на тоже место в цикле.
не понял до конца как работает.
попробую Ваш вариант как то пристроить
если есть время, посмотрите эти две функции:
def choice_progr(con,cur,stng,root,wnd2,m,lst):
# получение результатов предыдущего окна (весов гирь)
lst2 =
for xx in lst:
a = xx.get()
lst2.append(a)
wh,wl,n = ,,lst2
if lst2 == 1: wh.append(32)
if lst2 == 1: wh.append(28)
if lst2 == 1: wh.append(24)
if lst2 == 1: wl.append(20)
if lst2 == 1: wl.append(18)
if lst2 == 1: wl.append(16)
# обнуление вспомогательного окна
list = wnd2.grid_slaves()
for l in list:
l.destroy()
# отработка нового окна
progr = {}
with open('plan_workout.json') as fl:
progr_before = json.load(fl)# загрузка словаря предыдущего цикла
x = 0 # ряд в grid
for listEx_id in stng.list_exx():# цикл для каждого упражнения (их 30)
txt2 = ff.full_name(con, cur, listEx_id) # получает имя упр
m.lbl_3(wnd2,txt2,x,0,6,1)# выводит имя упр
x=x+1
if listEx_id in stng.list_ex_ket_wh: # цикл для гиревых упр
for y in wh:
w=y
b = data_ex(listEx_id,progr_before,w,con,cur,stng)
ms = show_result_before(listEx_id,con,cur,w,stng)
txt2 = str(y) + ‘ кг’
m.lbl_3(wnd2,txt2,x,0,1,1)
m.lbl_3(wnd2,'60%',x,1,1,1)
b1 = m.entry_1(wnd2,b,x,2)
m.lbl_3(wnd2,'80%',x,3,1,1)
b2 = m.entry_1(wnd2,b,x,4)
m.lbl_3(wnd2,'100%',x,5,1,1)
b3 = m.entry_1(wnd2,b,x,6)
x=x+1
m.lbl_3(wnd2,ms,x,0,6,1)
x=x+1
list_ex=
m.btn_3(wnd2,'Ok',lambda a=progr,b=list_ex,c=wnd2,d=m :
save_ex(a,b,c,d),4,x,4,1,1)
print('цикл остановился')
wnd2.wait_variable(list_ex)
print('цикл работает') — это сообщение не выводится
x=+1
def save_ex(progr,list_ex,wnd2,m):
# сохраняет данные по упр в словарь
listEx_id, w = list_ex, list_ex
b1 = list_ex.get()
b2 = list_ex.get()
b3 = list_ex.get()
progr =
#wnd2.destroy()
list = wnd2.grid_slaves()
for l in list:
l.destroy()
— после этого момента не возвращается к циклу
PEHDOM
Июнь 8, 2019 22:39:28
Ivansr
старые поля по замыслу стираются и на их месте появляются новые в цикле в том же окне
хмм тогда вообще не понимаю, зачам
лохматить бабушку стирать старые поля, и на их меcте рисовать новые, Да и еще окно каждый раз пересоздавать. просто очищайте значения в старых полях и все..
def btn_click():
list_main.append([a.get(), b.get()])
a.delete(0, 'end')
b.delete(0, 'end')
root = tkinter.Tk()
a = Entry()
b = Entry()
Button(command = btn_click )
root.mainloop()
Ivansr
если есть время, посмотрите эти две функции:
код нечитаем , используйте теги
чтобы сохранить форматирование
Ivansr
Июнь 9, 2019 20:41:08
спасибо! Предложение с счетчиком (переменная count), оказалось на удивление простым и работоспособным, вместо цикла for для данного случая.