Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 13, 2010 15:44:25

rokki
От:
Зарегистрирован: 2009-09-22
Сообщения: 79
Репутация: +  0  -
Профиль   Отправить e-mail  

RadioButton

будьте добры, как добиться чтобы при новом цикле обнулялись значения RadioButton

p=1
while p<100:
var=IntVar()
for i in range(1,5):
r=t.Radiobutton(fr2, value=i, variable=var)
r.grid(row=i, column=0, padx=10, pady=10)
r.config(bg='black', cursor='hand2')

p+=1



Отредактировано (Янв. 13, 2010 15:46:29)

Офлайн

#2 Янв. 14, 2010 17:20:33

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

RadioButton

Как понять “обнулялось”?
Что в итоге должно получится?



Офлайн

#3 Янв. 15, 2010 00:22:04

rokki
От:
Зарегистрирован: 2009-09-22
Сообщения: 79
Репутация: +  0  -
Профиль   Отправить e-mail  

RadioButton

в итоге должна точка пропадать из кружочка, чтобы при появлении новых кнопок все “кружочки” были пустые.



Офлайн

#4 Янв. 15, 2010 08:39:27

DHT
От:
Зарегистрирован: 2009-09-24
Сообщения: 119
Репутация: +  0  -
Профиль   Отправить e-mail  

RadioButton

var = IntVar()
var = 0
for i in range(1,5):
r = t.Radiobutton(fr2, value=i, variable=var)
r.grid(row=i, column=0, padx=10, pady=10)
r.config(bg='black', cursor='hand2')
Так не работает?



Офлайн

#5 Янв. 15, 2010 09:55:06

Griffon
От: Ukrain, Zaporozhie
Зарегистрирован: 2009-03-04
Сообщения: 324
Репутация: +  11  -
Профиль   Отправить e-mail  

RadioButton

.deselect()

var = 0
var.set(0)



Офлайн

#6 Янв. 15, 2010 12:16:52

rokki
От:
Зарегистрирован: 2009-09-22
Сообщения: 79
Репутация: +  0  -
Профиль   Отправить e-mail  

RadioButton

Griffon
.deselect()
спасибо, сбрасывает, сейчас вставлю в программу



Офлайн

#7 Янв. 17, 2010 00:17:59

rokki
От:
Зарегистрирован: 2009-09-22
Сообщения: 79
Репутация: +  0  -
Профиль   Отправить e-mail  

RadioButton

переделал, но получились вложенные функции, и теперь не могу получить значение var в каждом цикле, всегда ноль.Уже все варианты перепробовал

def okno_voprosov(self):
..................
def smena_voprosov():
global p, var
if p<24:
for i in range(4):
self.l1=Label(fr, text=self.otvet[0][i])
self.l1.grid(sticky=W, row=i, column=1)
self.r=Radiobutton(fr, value=i, variable=var)
self.r.grid(row=i, column=0)
u=var.get()
print 'u', u
p+=1
smena_voprosov()



Отредактировано (Янв. 17, 2010 00:46:11)

Офлайн

#8 Янв. 17, 2010 17:19:38

Griffon
От: Ukrain, Zaporozhie
Зарегистрирован: 2009-03-04
Сообщения: 324
Репутация: +  11  -
Профиль   Отправить e-mail  

RadioButton

а что мешает передавать cсылку на var аргументом функции?



Отредактировано (Янв. 17, 2010 17:19:56)

Офлайн

#9 Янв. 18, 2010 10:40:04

rokki
От:
Зарегистрирован: 2009-09-22
Сообщения: 79
Репутация: +  0  -
Профиль   Отправить e-mail  

RadioButton

Griffon
а что мешает передавать cсылку на var аргументом функции?
ничего не мешает, я в отчаянии, вставил метод get() везде.
вот весь класс, везде var.get()=0
class osnovnoe_okno:
def close(self):
s=box.askyesno(title='Внимание!', message='Вы хотите выйти?\nОценка поставится автоматически 2')
if s==True:
root.quit()

def okno_voprosov(self):
global root
var=IntVar()
self.u=var.get()
print 'u1', self.u
def smena_voprosov(var):
global p
self.u=var.get()
print 'u2', self.u
if p<24:
print 'p', p
db.execute('select vopros from Vopros where num=?',(p,))
vopros=db.fetchall()
self.lab21=Label(root, text=vopros[0][0])
self.lab21.grid()
self.lab3=Label(root, text='Ответ')
self.lab3.grid()
fr=Frame(root)
fr.grid()
db.execute('select otv1, otv2, otv3, otv4 from Otvet where num=?', (p,))
self.otvet=db.fetchall()
#db.execute('select count (*) from Otvet where num=?',(p,))
for i in range(4):
self.l1=Label(fr, text=self.otvet[0][i])
self.l1.grid(sticky=W, row=i, column=1)
self.r=Radiobutton(fr, value=i, variable=var)
self.r.grid(row=i, column=0)
self.u=var.get()
print 'u3', self.u
p+=1
else:
pass

self.con=sql.connect('db_test')
self.db=self.con.cursor()
self.db.execute('select num from Vopros')
kol_vopr=db.fetchall()
qs=len(kol_vopr)
root.destroy()
root=Tk()
root.title('Информатика')
root.config(padx=150, pady=100)
self.lab1=Label(root, text='Информация и ее кодирование')
self.lab1.grid()
self.lab2=Label(root, text='Вопрос')
self.lab2.grid()
self.u=var.get()
print 'u4', self.u
smena_voprosov(var)


self.frn=Frame(root)
self.frn.grid(row=6, padx=25, pady=15)

# for i in range(1, 24):
# self.lab=Label(self.frn, text=i, bg='green')
# self.lab.grid( column=i-1, ipadx=7)
self.u=var.get()
print 'u5', self.u
self.but2=Button(root, text='Вперед>>', command=self.okno_voprosov)
self.but2.grid()
self.but3=Button(root, text='Выход', command=self.close)
self.but3.grid()


def vibor_varianta(self):
global root
root.destroy()
root=Tk()
root.title('Информатика')
root.config(padx=100, pady=100)
self.lab1=Label(root, text='Самостоятельная работа по теме:\n"Информация и ее кодирование"')
self.lab1.grid()
self.lab2=Label(root, text='Для начала выбирай вариант')
self.lab2.grid()
for i in range(1,4):
self.fr=Frame(root)
self.but=Button(self.fr, text='Вариант №',command=self.okno_voprosov)
self.fr.grid()
self.but.grid()
за подсказку буду весьма благодарен



Офлайн

#10 Янв. 18, 2010 11:50:55

Griffon
От: Ukrain, Zaporozhie
Зарегистрирован: 2009-03-04
Сообщения: 324
Репутация: +  11  -
Профиль   Отправить e-mail  

RadioButton

Вполне логично. Вызывается “окно вопросов”. В самом начале обьявляется var установленный в ноль. И далее без остановки “окно вопросов” выполняется до конца. А значение изменится только тогда когда пользователь выберет хотя бы один вариант. То есть если поставить print var.get() перед var = IntVar(), то там по нажатию на кнопку что-то да должно быть, если конечно хоть что-то выбрано.

p.s. Если я правильно понял код :)



Отредактировано (Янв. 18, 2010 11:53:50)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version