bastion
Апрель 4, 2011 09:58:23
Есть корневой виджет 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()
Evgeny
Апрель 4, 2011 10:33:17
bastion
Не рабочий вариант:
Покажите рабочий, если не сложно. Интересно посмотреть, каким образом это вообще работает
sp3
Апрель 4, 2011 10:55:59
q = checkbutton(ro, variable=g, onvalue='y', offvalue='n').bind('<Button-1>', res).grid()
нельзя так делать
bastion
Апрель 4, 2011 11:03:34
“каким образом это вообще работает” - это работает если 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()
Evgeny
Апрель 4, 2011 11:33:20
Вот и заработало
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())
bastion
Апрель 4, 2011 11:39:23
“Вы создавали два экземпляра Tk (smth = Tk())”
спасибо, очень благодарен за ваш опыт и увеличение моего
недостаточно сообразителен я оказался в tkinter
Maxio777
Июль 29, 2018 01:35:49
Подскажите, пожалуйста!
Только начал изучать питон.
Как этот код офрмить с помощью цикла, чтобы не прописывать все в ручную. У меня никак не получается.
Может кто нибудь поможет. Ерунда конечно, но для меня проблема…
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()
DamMercul
Авг. 24, 2018 22:54:31
Я так понял тут никто не знает про теги для кода?