Форум сайта python.su
Написана программа с выводом цветного текста в окно ткинтера. Суть программы:
Выводится случайно выбранное название цвета (красный, оранжевый и т.д.) Цвет текста также выбирается случайно из того же набора. То-есть цвета могут совпасть или нет. Однако испытуемый должен назвать ЦВЕТ текста, а не написанное название. Время на решение 2 секунды ( это пока не написано, как и число попыток в цикле). Задача кажется простой, но по мере нарастания числа попыток весьма усложняется.
Программа уже “задышала”, работает корректно. Пока 5 цветов, будет больше. Но уже для 5 цветов получается 25 комбинаций и соответственно 25 строк для вывода текста - для каждого варианта.
Программа здесь:
https://pastebin.com/hsvQGNpv
ColorText
Попытался сделать функцию вывода на печать с заменой цветов соответственно случайной комбинации. Но не справился. Сокращенный вариант программы для двух вариантов:
https://pastebin.com/swayWBxi
Вариант с def
Окно tk появляется, но программа выдает ошибку:
https://pastebin.com/HxkSUhYf
Error
Что “не так” или вообще такой путь нереализуем?
Извините, если не получилось сделать нормальную ссылку на pasterin!
Отредактировано Simka (Апрель 14, 2023 12:36:31)
Офлайн
import tkinter as tk import random COLORS = { 'белый': 'white', 'черный': 'black', 'красный': 'red', 'зеленый': 'green', 'синий': 'blue', 'желтый': 'yellow', 'серый': 'gray', 'розовый': 'pink', 'оранжевый': 'orange' } def change_text(): while 1: color_name = random.choice(list(COLORS.keys())) if color_name != sv.get(): sv.set(color_name) break while 1: color = random.choice(list(COLORS.values())) if color != lbl['foreground']: lbl.config(foreground=color) break main_window = tk.Tk() main_window.geometry('300x200') sv = tk.StringVar() lbl = tk.Label(textvariable=sv, font='Arial 36 bold') lbl.pack(padx=10, pady=10) btn = tk.Button(text='следующий', command=change_text) btn.pack(side=tk.BOTTOM) change_text() main_window.mainloop()
Офлайн
Спасибо за быстрый ответ и предложенный вариант. Как я понял, я выбрал тупиковый вариант. Вы предлагаете отказаться от попыток заменять строки цветов в команде вывода текста. Предложено красивое изящное решение с применением виджетов. Если честно - не все в коде понял, и с логикой и с синтаксисом, это пока точно не мой уровень. Я пока на уровне книги Дж. Бриггса. Буду разбираться, ныряю в книги. Буду благодарен, если порекомендуете книги, которые помогут разобраться в синтаксисе вашего кода. Сейчас открыл Лутца.
Еще раз спасибо!
Отредактировано Simka (Апрель 14, 2023 18:54:08)
Офлайн
Simka
Буду благодарен, если порекомендуете книги, которые помогут разобраться в синтаксисе вашего кода
Simkaвот словарь, что тут удивительного
Если честно - не все в коде понял, и с логикой и с синтаксисом, это пока точно не мой уровень.
COLORS = { 'белый': 'white', 'черный': 'black', 'красный': 'red', 'зеленый': 'green', 'синий': 'blue', 'желтый': 'yellow', 'серый': 'gray', 'розовый': 'pink', 'оранжевый': 'orange' }
main_window = tk.Tk() main_window.geometry('300x200') sv = tk.StringVar() lbl = tk.Label(textvariable=sv, font='Arial 36 bold') lbl.pack(padx=10, pady=10) btn = tk.Button(text='следующий', command=change_text) btn.pack(side=tk.BOTTOM) change_text() main_window.mainloop()
Отредактировано xam1816 (Апрель 15, 2023 17:10:03)
Офлайн