Найти - Пользователи
Полная версия: Установка цвета
Начало » GUI » Установка цвета
1 2 3
OldSkif
Разобраться не могу.
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” не передается?..
igor.kaist
Все должно работать. Приведите минимальный рабочий кусок кода, а то общая картина не ясна.
А причем здесь цвет вообще?
igor.kaist
Все, понял что вам нужно. Откуда у вас такая любовь к 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, почему бы не почитать все же?
sp3
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()
OldSkif
Спасибо.
Стринг вар потому, что не знал как иначе..
OldSkif
По варианту Игоря следующая ошибка

    label["foreground"] = "red"
TypeError: 'NoneType' object does not support item assignment
4kpt
Попробуйте тогда так, хотя это одно и то же, что и предложил Игорь:

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.
OldSkif
Это то же самое, думаю сути не поменяет.
4kpt
Ну так работает или нет? Вы же писали ошибку.
Griffon
Тут проблема в том, что приведённый код не отображает реально происходящих вещей.
Лично я знаю, что один и тот же метод не может работать через раз, вижу что ловится какое-то исключение и вижу что код выполняется внутри блока. И делаю вывод, что программист считает что исключение может быть, но почему-то рассчитывает что переменная внутри блока обязательно будет установлена. Возможно проблема не в этом, но чтобы сказать более, надо видеть код, чтобы иметь возможность восстановить последовательность работы программы.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB