Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 12, 2012 00:49:31

Ystritsa
Зарегистрирован: 2012-12-10
Сообщения: 43
Репутация: +  0  -
Профиль   Отправить e-mail  

вопрос по tkinter Radiobutton

чтобы для каждой кнопки открывалось окно верхнего уровня и была возможность закрытия уже открытого окна если таковое присутствует.в этих окнах верхнего уровня должно быть выполнение функций update_user, get_user и т.д, поэтому я и писала “but2.bind(”<Button-1>“, update_user)”(тоесть заполнение полей-введите айди,имя фамилию….) или как это правильней сказать не знаю-окна должны быть связаны с функциями…

Отредактировано Ystritsa (Дек. 12, 2012 00:52:33)

Офлайн

#2 Дек. 12, 2012 01:03:42

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

вопрос по tkinter Radiobutton

Если надо, чтобы функция выполнялась по нажатию кнопки…

# -*- coding: utf-8 -*-
import Tkinter
root = Tkinter.Tk()
root.geometry("200x200+0+0")
root.focus_force()
def func01(event = None):
    print u"Выполняется функция 01"
def func02(event = None):
    print u"Выполняется функция 02"
def func03(event = None):
    print u"Выполняется функция 03"
def new_window(event = None):
    name = event.widget.cget("text")
    # Проверка существования окна верхнего уровня и его удаление...
    if len(root.winfo_children()) > 1:
        root.winfo_children()[1].destroy()
    # Проверка существования окна верхнего уровня и его удаление...
    tp = Tkinter.Toplevel(root)
    tp.title(name)
    tp.geometry("200x200+205+0")
    tp.focus_force()
    btquit = Tkinter.Button(tp, text=u"Выполнить функцию "+name)
    btquit.bind("<Button-1>", lambda x: eval("func"+name+"()"))
    btquit.place(relx=0.5, rely=0.5, anchor= "center")
boxdata = Tkinter.IntVar()
variant = ["01", "02", "03"]
lfr = Tkinter.LabelFrame(root, text=u"Выбор вариантов")
lfr.place(relx=0.5, rely=0.5, anchor="center")
for name in variant:
    rb = Tkinter.Button(lfr, text=name, width=10)
    rb.bind("<Button-1>", new_window)
    rb.pack()
root.mainloop()



Отредактировано 4kpt (Дек. 12, 2012 01:04:27)

Офлайн

#3 Дек. 12, 2012 01:08:56

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

вопрос по tkinter Radiobutton

Если нужно, чтобы функция выполнялась автоматически, после выбора кнопки, с учетом выбранной кнопки…

# -*- coding: utf-8 -*-
import Tkinter
root = Tkinter.Tk()
root.geometry("200x200+0+0")
root.focus_force()
def func01(tp = None):
    lab = Tkinter.Label(tp, text = u"Выполняется функция 01")
    lab.place(relx = 0.5, rely = 0.5, anchor = "center")
def func02(tp = None):
    lab = Tkinter.Label(tp, text = u"Выполняется функция 02")
    lab.place(relx = 0.5, rely = 0.5, anchor = "center")
def func03(tp = None):
    lab = Tkinter.Label(tp, text = u"Выполняется функция 03")
    lab.place(relx = 0.5, rely = 0.5, anchor = "center")
def new_window(event = None):
    name = event.widget.cget("text")
    # Проверка существования окна верхнего уровня и его удаление...
    if len(root.winfo_children()) > 1:
        root.winfo_children()[1].destroy()
    # Проверка существования окна верхнего уровня и его удаление...
    tp = Tkinter.Toplevel(root)
    tp.title(name)
    tp.geometry("200x200+205+0")
    tp.focus_force()
    eval("func"+name+"(tp)")
boxdata = Tkinter.IntVar()
variant = ["01", "02", "03"]
lfr = Tkinter.LabelFrame(root, text=u"Выбор вариантов")
lfr.place(relx=0.5, rely=0.5, anchor="center")
for name in variant:
    rb = Tkinter.Button(lfr, text=name, width=10)
    rb.bind("<Button-1>", new_window)
    rb.pack()
root.mainloop()

P.S. Сам преподаватель. Но дистанционки разрабатывать не хочу. У нас за это дрючат больше чем хвалят. Короче, овчинка вычинки не стоит :)



Отредактировано 4kpt (Дек. 12, 2012 01:10:51)

Офлайн

#4 Дек. 12, 2012 01:20:18

Ystritsa
Зарегистрирован: 2012-12-10
Сообщения: 43
Репутация: +  0  -
Профиль   Отправить e-mail  

вопрос по tkinter Radiobutton

благодарю за помощь!!!постараюсь в этом разобраться.
ясно.а у нас все помешаны на дистанционном образовании((

Офлайн

#5 Дек. 12, 2012 01:23:13

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

вопрос по tkinter Radiobutton

Если будут вопросы по коду - задавайте.
Отвечу завтра.
Ушел спать…



Офлайн

#6 Дек. 12, 2012 01:26:20

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

вопрос по tkinter Radiobutton

У нас по дистанционке бумаг и проблем больше, чем итоговых выиграшей. Т.е. ты можешь промучаться очень много времени, но при этом получишь столько же денег. Должен будешь сидеть на работе от и до (как и в случае с обычными курсами) оформлять большую кипу бумаг (больше чем при стационаре) и при этом еще дорабатывать дома.
Та ну до свидания. Пусть сами их делают…



Отредактировано 4kpt (Дек. 12, 2012 01:26:51)

Офлайн

#7 Дек. 12, 2012 01:31:50

Ystritsa
Зарегистрирован: 2012-12-10
Сообщения: 43
Репутация: +  0  -
Профиль   Отправить e-mail  

вопрос по tkinter Radiobutton

если возникнут вопросы задам).Спасибо еще раз и приятных Вам снов.

Офлайн

#8 Дек. 13, 2012 17:53:27

Ystritsa
Зарегистрирован: 2012-12-10
Сообщения: 43
Репутация: +  0  -
Профиль   Отправить e-mail  

вопрос по tkinter Radiobutton

ну вот у нас есть функция update_user для нее задаем переменные i, f, l которые надо указать обязательно иначе она не запустится. вот я не знаю каким образом задать переменные чтобы потом функция выполнялась при нажатии кнопки “Выполнить”

Прикреплённый файлы:
attachment 777777.py (3,1 KБ)

Офлайн

#9 Дек. 13, 2012 18:10:49

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

вопрос по tkinter Radiobutton

Можно через поля ввода. Сформировать 3 поля ввода. При нажатии кнопки “Выполнить” с этих трех полей ввода снимаются данные инструкцией имя_поля.get(). Результат подставляется в функцию простым вызовом: имя_функции(имя_поля1.get(), имя_поля2.get(), имя_поля3.get()).
Подумайте самостоятельно. Если будет нужен пример - пишите…



Офлайн

#10 Дек. 13, 2012 18:37:36

Ystritsa
Зарегистрирован: 2012-12-10
Сообщения: 43
Репутация: +  0  -
Профиль   Отправить e-mail  

вопрос по tkinter Radiobutton

я поставила в кусок описывающий функцию строку update_user(i.get(),f.get(),l.get()) и для полей i.get()
f.get() l.get() как Вы сказали но чегото выдает ошибку global name ‘i’ is not defined.что я неправильно сделала?

def update_user(ev):
    mdl = MDL()                     
    print mdl.conn_xmlrpc(server)
    users = [{
        'id': i,                       
        #'username': 'username3',        
        #'password': 'password3',
        'firstname': f,        
        'lastname': l,
        #'email': 'email3@domain.com',
        }]
    update_user(i.get(),f.get(),l.get())
    print mdl.update_users(server, users)
def new(ev):
    
    win2 = Toplevel()
    win2.title("Ввод данных")
    lbl1 = Label(win2, text = u"Введите id пользователя")
    lbl1.grid(row=1,column=0,columnspan=2)
    lbl2 = Label(win2, text = u"Введите имя пользователя")
    lbl2.grid(row=2,column=0,columnspan=2)
    lbl3 = Label(win2, text = u"Введите фамилию пользователя")
    lbl3.grid(row=3,column=0,columnspan=2)
    i = Entry(win2, width="20")
    f = Entry(win2, width="20")
    l = Entry(win2, width="20")
    i.grid(row=1,column=2,columnspan=2)
    f.grid(row=2,column=2,columnspan=2)
    l.grid(row=3,column=2,columnspan=2)
    i.get()
    f.get()
    l.get()
    
    but=Button(win2,text="Выполнить", width=18, height=2,)
    but.grid(row=4,column=2,ipadx=5,padx=10,pady=5)
    but.bind("<Button-1>",update_user)
    win2.mainloop() 

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version