Уведомления

Группа в Telegram: @pythonsu

#1 Март 5, 2011 20:03:58

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

Установка цвета

Разобраться не могу.

import urllib, string
from Tkinter import *
tk = Tk()

coll = StringVar()
coll.set("black")

a = StringVar()
a.set(...)

def nw(*arg):
try:
...
a.set(b)

coll.set("red")

except IOError, exc:
...
except NameError:
...
p = coll.get()
Label(c,
textvariable=den1,
relief="groove",
borderwidth=3,
font=("Courier", 12, "bold"),
foreground=p,
justify=LEFT,
width=30,
height=3,
takefocus=False,
).grid(row=2, column=1, columnspan=2, sticky=NW+SE)
Объясните мне, почему в результате работы функции nw переменной а устанавливается значение b, а переменной coll значение “red” не передается?..



Офлайн

#2 Март 6, 2011 13:47:11

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

Установка цвета

Все должно работать. Приведите минимальный рабочий кусок кода, а то общая картина не ясна.
А причем здесь цвет вообще?



Отредактировано (Март 6, 2011 13:47:37)

Офлайн

#3 Март 6, 2011 13:57:43

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

Установка цвета

Все, понял что вам нужно. Откуда у вас такая любовь к StringVar? Не нужно это пихать куда не нужно.

from Tkinter import *
root=Tk()

def foo():
label['foreground']='red'



label=Label(root,text='hello world')
label.pack()


but=Button(root,text='Change color',command=foo)
but.pack()

root.mainloop()
Я вам давал ссылку на документацию по Tkinter, почему бы не почитать все же?



Офлайн

#4 Март 6, 2011 17:07:19

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

Установка цвета

from Tkinter import *
from tkColorChooser import askcolor

def colorss():
but['bg'] = askcolor()[1]

root = Tk()
label=Label(root,text='hello world')
label.pack()

but=Button(root,text='Change color',command=colorss)
but.pack()

root.mainloop()



Офлайн

#5 Март 6, 2011 17:31:00

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

Установка цвета

Спасибо.
Стринг вар потому, что не знал как иначе..



Офлайн

#6 Март 6, 2011 17:48:30

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

Установка цвета

По варианту Игоря следующая ошибка

    label["foreground"] = "red"
TypeError: 'NoneType' object does not support item assignment



Офлайн

#7 Март 6, 2011 18:07:19

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

Установка цвета

Попробуйте тогда так, хотя это одно и то же, что и предложил Игорь:

import Tkinter

root = Tkinter.Tk()

def color(event):
label ["fg"] = "red"


label = Tkinter.Label(root)
label ["text"] = "color on"
label.pack()

button = Tkinter.Button(root)
button ["text"] = "COLOR"
button.bind("<Button-1>", color)
button.pack()

root.mainloop()
Как-то так. Хотя это то же, что и Игорь предложил, только через bind.



Офлайн

#8 Март 6, 2011 18:31:39

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

Установка цвета

Это то же самое, думаю сути не поменяет.



Офлайн

#9 Март 6, 2011 18:33:27

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

Установка цвета

Ну так работает или нет? Вы же писали ошибку.



Офлайн

#10 Март 6, 2011 19:32:50

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

Установка цвета

Тут проблема в том, что приведённый код не отображает реально происходящих вещей.
Лично я знаю, что один и тот же метод не может работать через раз, вижу что ловится какое-то исключение и вижу что код выполняется внутри блока. И делаю вывод, что программист считает что исключение может быть, но почему-то рассчитывает что переменная внутри блока обязательно будет установлена. Возможно проблема не в этом, но чтобы сказать более, надо видеть код, чтобы иметь возможность восстановить последовательность работы программы.



Отредактировано (Март 6, 2011 19:34:19)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version