Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 4, 2011 09:58:23

bastion
От:
Зарегистрирован: 2011-04-04
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

tkinter checkbutton (проблема с variable)

Есть корневой виджет root = Tk(), если в него поместить checkbutton с variable в виде StringVar() все работает.
Проблема:
создаю в корневом виджете дополнительный виджет который должне появляться по запросу пользователя, н-р виджет содержащий дополнительные настройки (в виде галочек checkbutton), назначаю ему variable, связываю checkbutton с кнопкой и переменная variable в трам-тарары (если точнее команда print variable.get() - выдает пустой символ)
Так должно быть или я что-то не правильно делаю подскажите кто знает???

Не рабочий вариант:
def pr():
global g
g = StringVar()
ro = Tk()
q = checkbutton(ro, variable=g, onvalue='y', offvalue='n').bind('<Button-1>', res).grid() ну и все такое прочее
ro.mainloop()
def res(event):
print(g.get()) - выводит пустой символ
root = Tk()
всплывающее меню которое вызывает функцию pr (вверху)
root.mainloop()



Офлайн

#2 Апрель 4, 2011 10:33:17

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

tkinter checkbutton (проблема с variable)

bastion
Не рабочий вариант:
Покажите рабочий, если не сложно. Интересно посмотреть, каким образом это вообще работает



Отредактировано (Апрель 4, 2011 10:34:42)

Офлайн

#3 Апрель 4, 2011 10:55:59

sp3
От:
Зарегистрирован: 2010-01-12
Сообщения: 405
Репутация: +  18  -
Профиль   Отправить e-mail  

tkinter checkbutton (проблема с variable)

q = checkbutton(ro, variable=g, onvalue='y', offvalue='n').bind('<Button-1>', res).grid()
нельзя так делать



Офлайн

#4 Апрель 4, 2011 11:03:34

bastion
От:
Зарегистрирован: 2011-04-04
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

tkinter checkbutton (проблема с variable)

“каким образом это вообще работает” - это работает если checkbutton прописан в основном виджете
“нельзя так делать” - это условность там код написан окуратно.(с новой строки .bind() потом опять с новой строки grid(row=0, column=0))
повторюсь в синтаксисе ошибок нет, если checkbutton прописан в основной виджет variable выводится в терминал, как тоолько прописываю во вспомогательный виджет выводит в терминал пустой символ
Моя вина, даю полный код одной из попыток выяснить проблему

#! /usr/bin/env python3.1
# coding: utf8
from tkinter import *
class gg:
def __init__(self):
global g
g = StringVar()
self.g = g
def menu(self, event):
ro = Tk()
ch = Checkbutton(ro, text='eXample', variable=self.g, onvalue='y', offvalue='n')
ch.grid(row=0, column=0)
ch.select()
b = Button(ro, text='Save', width=8)
b.bind('<Button-1>', start.pr)
b.grid(row=1, column=0)
ro.mainloop()
def pr(self, event):
print(g.get())
root = Tk()
start = gg()
bs = Button(root, width=10, text='connect')
bs.grid(row=0, column=0)
bs.bind('<Button-1>', start.menu)
root.mainloop()



Отредактировано (Апрель 4, 2011 11:07:09)

Офлайн

#5 Апрель 4, 2011 11:33:20

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

tkinter checkbutton (проблема с variable)

Вот и заработало

from Tkinter import *
class gg:
def __init__(self):
global g
g = StringVar()
self.g = g
def menu(self, event):
ro = Toplevel()
ch = Checkbutton(ro, text='eXample', variable=self.g, onvalue='y', offvalue='n')
ch.grid(row=0, column=0)
ch.select()
b = Button(ro, text='Save', width=8)
b.bind('<Button-1>', start.pr)
b.grid(row=1, column=0)

def pr(self, event):
print(g.get())
root = Tk()
start = gg()
bs = Button(root, width=10, text='connect')
bs.grid(row=0, column=0)
bs.bind('<Button-1>', start.menu)
root.mainloop()
Вы создавали два экземпляра Tk (smth = Tk())



Офлайн

#6 Апрель 4, 2011 11:39:23

bastion
От:
Зарегистрирован: 2011-04-04
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

tkinter checkbutton (проблема с variable)

“Вы создавали два экземпляра Tk (smth = Tk())”
спасибо, очень благодарен за ваш опыт и увеличение моего
недостаточно сообразителен я оказался в tkinter



Отредактировано (Апрель 4, 2011 11:41:33)

Офлайн

#7 Июль 29, 2018 01:35:49

Maxio777
Зарегистрирован: 2018-07-21
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

tkinter checkbutton (проблема с variable)

Подскажите, пожалуйста!
Только начал изучать питон.
Как этот код офрмить с помощью цикла, чтобы не прописывать все в ручную. У меня никак не получается.
Может кто нибудь поможет. Ерунда конечно, но для меня проблема…

 from tkinter import *
import shelve
db = shelve.open('class_shelve_pn')
iossel = db['iossel']
shapin = db['shapin']
shichkov = db['shichkov']
root=Tk()
var1=IntVar()
var2=IntVar()
var3=IntVar()
def change():
	if var1.get() == 1:
		iossel.AddCounte()
	if var2.get() == 1:
		shapin.AddCounte()
	if var3.get() == 1:
		shichkov.AddCounte()
	
check1=Checkbutton(root,text=(db['iossel']),variable=var1,onvalue=1,offvalue=0)
check2=Checkbutton(root,text=(db['shapin']),variable=var2,onvalue=1,offvalue=0)
check3=Checkbutton(root,text=(db['shichkov']),variable=var3,onvalue=1,offvalue=0)
button = Button(text="Изменить", command=change)
check1.pack()
check2.pack()
check3.pack()
button.pack()
root.mainloop()
db['iossel'] = iossel
db['shapin'] = shapin
db['shichkov'] = shichkov
db.close()

Отредактировано Maxio777 (Июль 29, 2018 01:51:50)

Офлайн

#8 Авг. 24, 2018 22:54:31

DamMercul
Зарегистрирован: 2017-11-26
Сообщения: 323
Репутация: +  13  -
Профиль   Отправить e-mail  

tkinter checkbutton (проблема с variable)

Я так понял тут никто не знает про теги для кода?



____________________________________________________

 # Life loop
while alive:
    if (fun > boredom) and money:
        pass_day(fun, boredom, money)
        continue
    else: break

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version