функция для деактивации/активации кнопки: def fsatate(): if btn5['state'] == DISABLED: btn5['state'] = NORMAL else: btn5['state'] = DISABLED Т.е. просто меняется при нажатии значение с DISABLED на NORMAL и наоборот
File "C:\Users\adilk\Documents\PythonProjects\�������", line 2, in state if btn1['state'] == NORMAL: NameError: name 'NORMAL' is not defined def state(): if btn1['state'] == NORMAL: btn1['state'] = DISABLE else: btn1[state] = NORMAL btn1 = tk.Button(win, text='state', command=state, state=tk.NORMAL )
Замечательно. Спасибо большое. Оказалось, что стать спонсором совсем не так страшно. Зато ничего искать не надо, всё разжевывается, только успевай усваивать)))
импортировал модуль random и подставил в кнопке в command " def color(): c = ['white','black', 'yellow', 'orange', 'green', 'blue', 'purple'] win.config(background=random.choice(c)) "
Добрый день! Курс очень понравился но есть один нюанс: 2:51 передать аргументы в кнопке можно. Достаточно написать функцию а потом: command = lambda: название функции(аргументы). То есть через лямбду функцию вызвать другую функцию и уже в нее передать аргументы. Спасибо еще раз за курс!
И как же это тебе поможет? Если даже вызывать функцию внутри анонимной функций и узнать к чему равен count и изменить словарь button это тебе не поможет а лишь добавит больше кода и ошибки
Интересное видео, спасибо. Сечас как раз изучаю ткинтер. А вот как обстоит дело с обработкой некоторого достаточного массива кнопок? Экспериментировал с полем кнопок, создаваемых динамически через цикл. И это получается. А вот как узнать, какая кнопка в этом массиве, нажимается? Например, поле из 100 кнопок. Вручную писать функцию обработчик сто раз, это чересчур. Можно как-то иначе, обрабатывать нажатие, более автомаьичесаки?
Вопрос: А тут нет каких-то обработчиков событий типа onClick, onButtonDown, onButtonUp, onMove, onMouseOver...? Например, пока я веду курсор мыши над кнопкой - что-то происходит... И если я хочу при изменении размера окна изменить размер картинки... Что-то типа onResize...
Есть несколько строк текста с разным размером шрифта. Возможно ли это всё запихнуть в некий контейнер и чтобы при нажатии на любую область этого контейнера выполнялось событие? Грубо говоря нужно запихнуть в кнопку несколько виджетов, чтобы это всё было одной кнопкой
почему у меня все белое и после окончания строчки тоесть я что то написал и нажал ентер для следующей строчки то что я писал на прошлой строчке удалить нельзя?
random_color = f'#{random.randint(0, 255):02x}{random.randint(0, 255):02x}{random.randint(0, 255):02x}' win.config(bg=f'{random_color}') Чат GPT помог хД. Но команда классная
Артём спасибо тебе за такой классный контент, продолжай в том же духе. У меня к тебе вопрос, можно ли в функцию которую мы создаём для кнопки, поставить ссылку на файл txt ? Например, кода мы меняли иконку нашего окна, мы ссылались на фото которую ранее мы скачали, можно ли такое сделать для кнопки, что бы нажав на кнопку у нас открылся лейбл с куча текстов? Очень сумбурно объяснил, но надеюсь ты понял суть
Функция случайный фон: def random_bg(): color = random.choice(["black", "cyan", "magenta", "red", "blue", "gray" ]) win.configure(background=color) Если сделал через RGB - поделись!)
Единственное что, DISABLED и NORMAL это же не строка Это обьект tk.DISABLED и tk.NORMAL Не знаю, как у вас, но у меня ваш код не работает. Зато работает вот это: def locker(): global btn_wincolor btn_wincolor["state"] = tk.DISABLED btn_wincolor.pack() Это кнопка по нажатию на которую другая кнопка будет блокироваться
Интересует. Как указать кнопке чтобы при нажатии на неё запускался другой фаил в питоне со своей графической оболочкой (другая оболочка). Грубо говоря по кнопке из одного фаила на другой?
Дз.Функция случайного цвета: from random import randrange def randomize_color(): r = hex(randrange(0, 255, 1))[2:] g = hex(randrange(0, 255, 1))[2:] b = hex(randrange(0, 255, 1))[2:] if len(r) != 2: r = '0' + r if len(g) != 2: g = '0' + g if len(b) != 2: b = '0' + b win.config(bg=f'#{r}{g}{b}')
...... def color_set(): r = lambda: random.randint(0,255) return '#%02X%02X%02X' % (r(),r(),r()) btn1 = tk.Button(win, text = "Button1", command = color_set) btn1.pack() win.config(bg = color_set()) win.mainloop() По поводу вашего домашнего задания с генерацией цвета фона при нажатии кнопки. У меня фон почему-то не изменяется. Один раз случайно выбрался - и все. Может, со временем снимите видео с разбором этого д/з?
def random_color(): global ran r = lambda:randint(0,99) ran = str("{:02}".format(r())) + str("{:02}".format(r())) + str("{:02}".format(r())) but2['bg'] = f'#{ran}' ran = 'ff0000'... В 16ричной пока не придумал, как наворотить) Цвета представляются в виде трёх групп шестнадцатеричных цифр, где каждая группа отвечает за свой цвет: #112233, где 11 - красный, 22 - зелёный, 33 - синий. Все значения должны быть между 00 и FF.
чтобы функция меняла выбранный параметр для всех кнопок делал список всех кнопок, который обходил в функции, но понимаю что должен быть путь покороче - подскажите как вызвать список с именами всех экземпляров класса Button (btn1, btn2, ...)
Артем, подскажи пожалуйста, с чем может быть связана проблема - вот такой код не меняет цвет кнопки. Строка распаковки есть. При этом, если таким же образом параметр bg='red' прописываю в функции add_label - Питон создает кнопку с нужным цветом.
Я не понимаю одну вещь. Как я используя одну кнопку смогу передать значение другой. То есть как я могу передать state='DISABLED' другой кнопке? Как мне это прописать.?
import tkinter as tk from random import randint c = 0 cc = 0 col = ['#FF0000', '#00FF00', '#FF1493', '#9ACD32', '#20B2AA', '#FFA500', '#FFFF00', '#8A2BE2'] def btnCol(): return col[randint(0, len(col)-1)] def btnOne(): global c c += 1 btn['activebackground'] = btnCol() btn['bg'] = btnCol() btn['text'] = f'Кнопка была нажата {c} раз' win.config(bg=btnCol()) if c == 10: btn2['state'] = tk.DISABLED def btnTwo(): global cc cc += 1 btn2['activebackground'] = btnCol() btn2['bg'] = btnCol() btn2['text'] = f'Кнопка была нажата {cc} раз' win.config(bg=btnCol()) if cc == 10: btn['state'] = tk.DISABLED win = tk.Tk() win.title('Калькулятор') photo = tk.PhotoImage(file = 'Calculator.png') win.iconphoto(False, photo) win.geometry('350x350+430+190') btn = tk.Button(win, text = 'press', command = btnOne) btn2 = tk.Button(win, text = 'press', command = btnTwo) btn.pack() btn2.pack() win.mainloop() win.mainloop() Это мой код, лень писать другой, в кратце здесь все меняет свой цвет. Но ты посмотри на то, как я изменяю состояние второй кнопки, когда первую кнопку я нажал 10 раз, и так же наоборот
@@EdvardKenua не за что, если возникают какие нибудь вопросы, попробуй погуглить, т.к я сам не понимал как изменять состояние кнопки, перепробовал все, таки не получилось. Потом решил загуглить, и сразу нашел ответ на этот вопрос
это метод форматирования строк - f строки a = "python" b = "круто" # заключите переменную в {}, чтобы отобразить ее значение в выводе print(f"{a} это {b}.") вывод: python это круто. он забыл убрать с прошлого урока, где подставлял вместо размеров переменные с ними
Функция для изменения состояния всех остальных кнопок: def change_state(): child_keys = win.__dict__['children'] for el in child_keys: if el != '!button': if child_keys[el]['state'] == tk.NORMAL: child_keys[el]['state'] = tk.DISABLED else: child_keys[el]['state'] = tk.NORMAL change_state_btn = Button_mc(win, text='Change the state of the button', command=change_state )
Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!
автору огромное спасибо за видео! вот задачка с рандомным фоновым цветом: import tkinter as tk from random import * def random_color(): color = ['black', 'white', 'green', 'yellow', 'blue', 'red', 'grey', 'purple', 'orange'] c = randrange(len(color)) win.config(bg=f'{color[c]}') win = tk.Tk() win.geometry("500x400") bttn_ran = tk.Button(win, text='random fon color', command=random_color, bg='white', fg='black' ) bttn_ran.pack() win.resizable(True, True) win.mainloop()
from random import* root = Tk() root.title("Test") root.geometry("300x400+600+200") root["bg"] = "#fff" root.resizable(width=False, height=False) photo = PhotoImage(file="icon.png") root.iconphoto(False, photo) def func(): s = "blue black white yellow green red brown aqua orange lime".split() root["bg"] = choice(s) btn1 = Button(text="Нажми", command=func) btn1.pack() root.mainloop()
Подскажите пожалуйста как сделать что бы нажималась первая кнопка, а счётчик выводил на 2ю кнопку? Не могу понять((( def add_label(): label = tk.Label(win,text='Щёлк!', bg='red', #цвет фона текста fg='#000000', #цвет шрифта сделала чёрный font=('Arial', 20,'bold'), #поменяла шрифт на эриал, сделала его крупнее и жирным padx=10, #добавила отступы цвета фона шрифта с боков(рамочка) pady=5) label.pack() def counter (): global count count+=1 btn2['text']=f'Танос щёлкнул: {count} раз' count = 0 import tkinter as tk #сокращаем название win =tk.Tk() btn1 = tk.Button(win,text='Щелчок Таноса!', command=add_label ) btn2 = tk.Button(win,text=f'Танос щёлкнул: {count} раз', command=counter ) btn1.pack() #выводим кнопку btn2.pack() win.geometry("500x600+700+400") #Задала размер окна, двумя плюсами я указываю где появляется окно относительно левого угла в пикселях, #можно создавать через переменные win.resizable(False, False) # растягиваемое окно по умолчанию (True,True)первое ширина второе высота win.mainloop()
def color(): color = randint(0, 255) color2 = randint(0, 255) color3 = randint(0, 255) a = hex(color)[2:].ljust(2, '0').upper() b = hex(color2)[2:].ljust(2, '0').upper() c = hex(color3)[2:].ljust(2, '0').upper() d = '#' + a + b + c win.config(bg=d) функция для выбора полного рандома цвета
import tkinter as tk import random def btn(): global r r = random.randint(0,5) win.config(bg=mass[r]) r = random.randint(0,5) win = tk.Tk() a = 100 b = 300 win.geometry("600x600") btn1 = tk.Button(win, text="Кнопка", bg="blue", command=btn) btn1.pack() mass = ["red", "blue", "green", "yellow", "purple", "orange"] print(r) win.mainloop()
Вот такое странное рандомное изменение цвета написал def rand_color(): x = f'#{str(hex(randint(10,255)))[2:]}{str(hex(randint(10,255)))[2:]}{str(hex(randint(10,255)))[2:]}' return x win.config(bg=rand_color())
Домашнее задание то как делать? Раскрасить кнопки и расположить их на экране это одно , а логика взаимодействия с синтаксисом питона это другое. Голову сломал уже как к гребаному счетчику прикрутить замену state
Просидел вечер в итоге, прогуглил похожие примеры. Сделал. Помимо синтаксиса и логики, важно еще в каком месте находится блок который ты пишешь в самом коде. Боль
Вы лучше чем Хауди, Дударь и Шпагин вместе взятые. Спасибо!
кто эти люди.
🧢
А Шпагин это кто?
Согласен
Спасибо огромное, невозможно оторваться! ваш канал -очень ценная находка!
Сложно новичку, но интересно, особенно когда видишь результаты труда, пусть и повтора за вами
пропустили момент, когда у функции есть аргументы. спасибо за урок:)
функция для деактивации/активации кнопки:
def fsatate():
if btn5['state'] == DISABLED:
btn5['state'] = NORMAL
else:
btn5['state'] = DISABLED
Т.е. просто меняется при нажатии значение с DISABLED на NORMAL и наоборот
Как же я не додумался до этого🤦♂
def fsatate():
if btn4['state'] == tk.DISABLED:
btn4['state'] = tk.NORMAL
else:
btn4['state'] = tk.DISABLED
Спасибо! Помог
File "C:\Users\adilk\Documents\PythonProjects\�������", line 2, in state
if btn1['state'] == NORMAL:
NameError: name 'NORMAL' is not defined
def state():
if btn1['state'] == NORMAL:
btn1['state'] = DISABLE
else:
btn1[state] = NORMAL
btn1 = tk.Button(win, text='state',
command=state,
state=tk.NORMAL
)
@@adilkhanarts21
*******
def state():
if btn1['state'] == tk.NORMAL:
btn1['state'] = tk.DISABLED
else:
btn1[state] = tk.NORMAL
Замечательно. Спасибо большое. Оказалось, что стать спонсором совсем не так страшно. Зато ничего искать не надо, всё разжевывается, только успевай усваивать)))
импортировал модуль random и подставил в кнопке в command "
def color():
c = ['white','black', 'yellow', 'orange', 'green', 'blue', 'purple']
win.config(background=random.choice(c)) "
Добрый день! Курс очень понравился но есть один нюанс: 2:51 передать аргументы в кнопке можно. Достаточно написать функцию а потом: command = lambda: название функции(аргументы). То есть через лямбду функцию вызвать другую функцию и уже в нее передать аргументы. Спасибо еще раз за курс!
И как же это тебе поможет? Если даже вызывать функцию внутри анонимной функций и узнать к чему равен count и изменить словарь button это тебе не поможет а лишь добавит больше кода и ошибки
Просто если даже изменить count, то не измениться самое число внутри button и нужно будет и count и button менять
Спасибо вам большое, вы единственный кто понятно, полно и без лишней спешки объясняет. Кто хочет чему- то научиться, вам сюда.
Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!
Цвета можно так нарандомить f"#{random.randrange(0x1000000):06x}"
Очень информативно и помогает дополнительно к основным курсам, более понятно.Спасибо
шикарные курсы по питону!! Спасибо!
спасибо за серию видеороликов, единственный канал на котором я смог найти нормальные уроки по этой библиотеке
по замене цвета
def bg_win():
col=['red', 'green', 'blue','pink', 'white', 'brown']
win.config(background=random.choice(col))
6:47 Разрывная)
да, хорошая
Это самое крутое объяснение которое я когда либо находил, спасибо огромное за твое время и труд
Очень хороший урок!!
Отличный материал, спасибо!
Интересное видео, спасибо. Сечас как раз изучаю ткинтер. А вот как обстоит дело с обработкой некоторого достаточного массива кнопок? Экспериментировал с полем кнопок, создаваемых динамически через цикл. И это получается. А вот как узнать, какая кнопка в этом массиве, нажимается? Например, поле из 100 кнопок. Вручную писать функцию обработчик сто раз, это чересчур. Можно как-то иначе, обрабатывать нажатие, более автомаьичесаки?
Рандомное изменение цветов по кнопке:
def color_changer():
colors = ['red', 'orange', 'yellow', 'green', 'blue', 'purple']
import random
random_index = random.randint(0, len(colors) - 1)
root.config(bg=colors[random_index])
Спасибо напишите как можно сделать чтобы текст в лейбл был по правому краю а не по середине
Вопрос: А тут нет каких-то обработчиков событий типа onClick, onButtonDown, onButtonUp, onMove, onMouseOver...?
Например, пока я веду курсор мыши над кнопкой - что-то происходит...
И если я хочу при изменении размера окна изменить размер картинки...
Что-то типа onResize...
Спасибо за урок! Хорошо как всегда!
Спасибо тебе добрый человек. Очень информативно, внятно и доходчиво! 🤝
Спасибо! Помоги тебе бог, добрый человек!
Спасибо огромное! все очень понятно, без лишних слов! 👍
Пока смотрю и повторяю, всё так легко, а как начинаю сам.. затупливаю сразу)
Есть несколько строк текста с разным размером шрифта. Возможно ли это всё запихнуть в некий контейнер и чтобы при нажатии на любую область этого контейнера выполнялось событие? Грубо говоря нужно запихнуть в кнопку несколько виджетов, чтобы это всё было одной кнопкой
Ваш урок помог разобраться, лайк!
Шутка на 6 минуте разорвала просто )))))))))))))))
почему у меня все белое и после окончания строчки тоесть я что то написал и нажал ентер для следующей строчки то что я писал на прошлой строчке удалить нельзя?
random_color = f'#{random.randint(0, 255):02x}{random.randint(0, 255):02x}{random.randint(0, 255):02x}'
win.config(bg=f'{random_color}')
Чат GPT помог хД. Но команда классная
Для рандомного выбора фона окна:
colors=['red','green','blue','yellow','orange']
def change_ground():
root.config(bg=random.choice(colors))
button3['text']='change'
button3=tk.Button(text='change',command=change_ground)
узковат у тебя рандом))) лучше через randomint ...
root.config(bg=f"#{random.randint(1,1000)}") в одну строчку, можно через лямбду даже впаять)
@@AXGroser можно и так)
cveta = ['red','green','blue','black','white']
def random_color():
window['bg'] = random.choice(cveta)
b5=Button(window, text='рандомный цвет фона', command=random_color)
b5.pack()
Спасибо Артем
Все понятно и интересно
win=tk.Tk()
win.geometry(f"400x500+10+20")
win.title("input")
win.mainloop()
Артём спасибо тебе за такой классный контент, продолжай в том же духе. У меня к тебе вопрос, можно ли в функцию которую мы создаём для кнопки, поставить ссылку на файл txt ? Например, кода мы меняли иконку нашего окна, мы ссылались на фото которую ранее мы скачали, можно ли такое сделать для кнопки, что бы нажав на кнопку у нас открылся лейбл с куча текстов? Очень сумбурно объяснил, но надеюсь ты понял суть
кнопа срабатывает сразу без ожидания
Здравствуйте. Как, непосредственно, изменить параметры Label через Button?
Например: при нажатии кнопки - меняется цвет определённого текста.
btn['параметр'], например label1['bg'] = 'red
@@СергейЮдин-ч2г thank you
А есть двухпозиционные кнопки? Типо переключателя, где есть вкл и выкл?
Радио батон)
@@egoroffchannel спасибо)
А как сворачивать окно в трэй и выводить всплывающие окошки из трея, вы узнаете в специальном выпуске, доступном только для спонсоров :)))
А шо поделать)
как сделать так чтоб при нажатии откривалась указаная программа
МОжем спсатся?
Как размещать кнопку и менять её размер?
Можем списатся?
Как сделать чтобы после нажатия кнопки окно закрывалось?
в функцию напиши break
def dds():
global count
l = [btn1, btn2, btn3]
if count % 2 == 0:
for i in l:
i['state'] = tk.DISABLED
else:
for i in l:
i['state'] = tk.NORMAL
Спасибо большое
но ты забыла count + = 1
if и else можно внутри одного цикла for написать
Спасибо за урок!
Функция случайный фон:
def random_bg():
color = random.choice(["black",
"cyan",
"magenta",
"red",
"blue",
"gray"
])
win.configure(background=color)
Если сделал через RGB - поделись!)
def random_rgb():
r = lambda: randint(0, 255)
i = '#%02X%02X%02X' % (r(), r(), r())
root.config(bg = i)
import random
color = "#" + random.choice(list_of_color_symbols) + random.choice(list_of_color_symbols) + random.choice(list_of_color_symbols) + random.choice(list_of_color_symbols) + random.choice(list_of_color_symbols) + random.choice(list_of_color_symbols)
win.config(bg=color)
Расскажи подробно про Delate(), Entry и mainloop
th-cam.com/video/mLySBcS-6p0/w-d-xo.html
import tkinter as tk
import random as r
def do():
colors = ('yellow', 'blue', 'red', 'pink', 'brown', 'purple', 'orange')
rand = r.randint(0, 6)
win.config(bg=colors[rand])
win = tk.Tk()
photo = tk.PhotoImage(file='programm.png')
win.config(bg='yellow')
win.geometry('400x400+300+200')
win.iconphoto(False, photo)
button = tk.Button(win, text='Click it!',
command=do
)
button.pack()
win.mainloop()
P.s Вот дз), сделал по-своему принципу😁
фрагмент для блокировки/разблокировки кнопок пятой кнопкой
#------------
def fstat():
bstat = btn4['state']
if bstat == 'normal':
bstat = 'disabled'
elif bstat == 'disabled':
bstat = 'normal'
btn1['state'] = btn2['state'] = btn3['state'] = btn4['state'] = bstat
btn5['text'] = f'button stat {bstat}'
#------------
btn5 = tk.Button(win, text=f'buttons is normal',
command=fstat
)
#------------
btn5.pack()
Мудро
Спасибо, как раз ломал голову над этим
Единственное что, DISABLED и NORMAL это же не строка
Это обьект tk.DISABLED и tk.NORMAL
Не знаю, как у вас, но у меня ваш код не работает.
Зато работает вот это:
def locker():
global btn_wincolor
btn_wincolor["state"] = tk.DISABLED
btn_wincolor.pack()
Это кнопка по нажатию на которую другая кнопка будет блокироваться
Без глобал можно как то передать переменную в функцию?
Почему именно лямбда? А не обычная функция?
Интересует. Как указать кнопке чтобы при нажатии на неё запускался другой фаил в питоне со своей графической оболочкой (другая оболочка). Грубо говоря по кнопке из одного фаила на другой?
Дз.Функция случайного цвета:
from random import randrange
def randomize_color():
r = hex(randrange(0, 255, 1))[2:]
g = hex(randrange(0, 255, 1))[2:]
b = hex(randrange(0, 255, 1))[2:]
if len(r) != 2:
r = '0' + r
if len(g) != 2:
g = '0' + g
if len(b) != 2:
b = '0' + b
win.config(bg=f'#{r}{g}{b}')
Спасибо огромное!
А можно ли как-то функционал кнопок вынести в другие скрипты и запускать их из этого же скрипта (как в C#).
......
def color_set():
r = lambda: random.randint(0,255)
return '#%02X%02X%02X' % (r(),r(),r())
btn1 = tk.Button(win, text = "Button1", command = color_set)
btn1.pack()
win.config(bg = color_set())
win.mainloop()
По поводу вашего домашнего задания с генерацией цвета фона при нажатии кнопки. У меня фон почему-то не изменяется. Один раз случайно выбрался - и все.
Может, со временем снимите видео с разбором этого д/з?
потому что в функции color_set() надо вместо return присваивать это значение для btn1[bg]
@@kanycto4kaспасибо!
@@meylyssa3666 vможете прислать рабочий код? а то я не пойму каким образом можно присвоить значение до btn1[bg]
@@dmytrokovalenko8492 btn1['bg']
если нужно поменять фоновый цвет окна то win['bg']
def random_color():
global ran
r = lambda:randint(0,99)
ran = str("{:02}".format(r())) + str("{:02}".format(r())) + str("{:02}".format(r()))
but2['bg'] = f'#{ran}'
ran = 'ff0000'...
В 16ричной пока не придумал, как наворотить)
Цвета представляются в виде трёх групп шестнадцатеричных цифр, где каждая группа отвечает за свой цвет: #112233, где 11 - красный, 22 - зелёный, 33 - синий. Все значения должны быть между 00 и FF.
Лутший, все понял, спасибо!
лучший - пиши грамотно сопляк
чтобы функция меняла выбранный параметр для всех кнопок делал список всех кнопок, который обходил в функции, но понимаю что должен быть путь покороче - подскажите как вызвать список с именами всех экземпляров класса Button (btn1, btn2, ...)
👍👍
Класс!
Спасибо большое!)
Артем, подскажи пожалуйста, с чем может быть связана проблема - вот такой код не меняет цвет кнопки. Строка распаковки есть. При этом, если таким же образом параметр bg='red' прописываю в функции add_label - Питон создает кнопку с нужным цветом.
btn_4 = tk.Button(wind, text=f'счётчик{count}',
command=counter,
padx=14,
pady=16, bg='#E5C6EB')
Дай угадаю, ты на MacOS работаешь =)
Не переживай, у меня такая же тема
+ коммент выше тоже писал
Что за настройки и тема у тебя в PyCharm?
WarmNeon
@@egoroffchannel не нашел к сожалению(
@Tyr Tirov посмотри пожалуйста, если не трудно
@Tyr Tirov Спасибо большое
Я не понимаю одну вещь. Как я используя одну кнопку смогу передать значение другой. То есть как я могу передать state='DISABLED' другой кнопке?
Как мне это прописать.?
@@robertrobert5650 , спасибо
import tkinter as tk
from random import randint
c = 0
cc = 0
col = ['#FF0000', '#00FF00', '#FF1493', '#9ACD32', '#20B2AA', '#FFA500', '#FFFF00', '#8A2BE2']
def btnCol():
return col[randint(0, len(col)-1)]
def btnOne():
global c
c += 1
btn['activebackground'] = btnCol()
btn['bg'] = btnCol()
btn['text'] = f'Кнопка была нажата {c} раз'
win.config(bg=btnCol())
if c == 10:
btn2['state'] = tk.DISABLED
def btnTwo():
global cc
cc += 1
btn2['activebackground'] = btnCol()
btn2['bg'] = btnCol()
btn2['text'] = f'Кнопка была нажата {cc} раз'
win.config(bg=btnCol())
if cc == 10:
btn['state'] = tk.DISABLED
win = tk.Tk()
win.title('Калькулятор')
photo = tk.PhotoImage(file = 'Calculator.png')
win.iconphoto(False, photo)
win.geometry('350x350+430+190')
btn = tk.Button(win, text = 'press',
command = btnOne)
btn2 = tk.Button(win, text = 'press',
command = btnTwo)
btn.pack()
btn2.pack()
win.mainloop()
win.mainloop()
Это мой код, лень писать другой, в кратце здесь все меняет свой цвет. Но ты посмотри на то, как я изменяю состояние второй кнопки, когда первую кнопку я нажал 10 раз, и так же наоборот
@@EdvardKenua не за что, если возникают какие нибудь вопросы, попробуй погуглить, т.к я сам не понимал как изменять состояние кнопки, перепробовал все, таки не получилось. Потом решил загуглить, и сразу нашел ответ на этот вопрос
подскажите что обозначает " f " ? В win.geometry(f"400x500+100+200")
это метод форматирования строк - f строки
a = "python"
b = "круто"
# заключите переменную в {}, чтобы отобразить ее значение в выводе
print(f"{a} это {b}.")
вывод: python это круто.
он забыл убрать с прошлого урока, где подставлял вместо размеров переменные с ними
@@KrabDefense ничего не понял, но спасибо за ответ. А можно ссылку на тот урок, а то видео много еще ни все посмотрел.
@@БобЗлобный он там просто подставил подставил и ничего не говорил, просто забей "что такое f строки" тебе сразу выдаст :)
Функция для изменения состояния всех остальных кнопок:
def change_state():
child_keys = win.__dict__['children']
for el in child_keys:
if el != '!button':
if child_keys[el]['state'] == tk.NORMAL:
child_keys[el]['state'] = tk.DISABLED
else:
child_keys[el]['state'] = tk.NORMAL
change_state_btn = Button_mc(win, text='Change the state of the button',
command=change_state
)
нажимая на btn3 мы добавляем каждый раз новые label. А как можно изменить текст новых label или одной из новых (добавленных) label?
Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!
еще 1000 раз напиши лапоть
Большое вам спасибо😀😁🤪
Как двигать кнопки если её кудато хочеш вставить
тоже запнулся на моменте сдвига самой кнопки. И так и эдак, пока не получается ))
Вариант выполненного ДЗ:
def say_hello():
print('hello')
def add_label():
label=tk.Label(win,text='new')
label.pack()
def counter():
global count
count+=1
btn4['text']=f'Счетчик:{count}'
def disabling():
global count
count+=1
if count%2==0:
btn1['state']='disabled'
else:
btn1['state']='normal'
def coloring():
color=random.randint(1,900000)
win.config(bg=f'#{color}')
count = 0
import tkinter as tk
import random
win = tk.Tk()
h = 500
w = 600
photo = tk.PhotoImage(file = 'fun.png')
win.iconphoto(False, photo)
win.config(bg='green')
win.title("First window")
win.geometry(f"{h}x{w}+100+200")
btn1 = tk.Button(win,text='Hello',
command=say_hello)
btn2 = tk.Button(win,text='Add new label',
command=add_label)
btn3 = tk.Button(win,text='Add new label lambda',
command=lambda: tk.Label(win,text='new lambda').pack())
btn4 = tk.Button(win,text=f'Счетчик:{count}',
command=counter,
bg='red',
activebackground='blue'
)
btn5 = tk.Button(win,text='Disabling',
command=disabling,
bg='yellow',
activebackground='brown'
)
btn6 = tk.Button(win,text='BG_Coloring',
command=coloring,
bg='brown',
)
btn1.pack()
btn2.pack()
btn3.pack()
btn4.pack()
btn5.pack()
btn6.pack()
win.mainloop()
4:02 для себя
Ничего не работает, всё через пятую точку
Ты просто написал с 5 точкой
автору огромное спасибо за видео! вот задачка с рандомным фоновым цветом:
import tkinter as tk
from random import *
def random_color():
color = ['black', 'white', 'green', 'yellow', 'blue', 'red', 'grey', 'purple', 'orange']
c = randrange(len(color))
win.config(bg=f'{color[c]}')
win = tk.Tk()
win.geometry("500x400")
bttn_ran = tk.Button(win, text='random fon color',
command=random_color,
bg='white',
fg='black'
)
bttn_ran.pack()
win.resizable(True, True)
win.mainloop()
харош. я чуть больше кода сделал. через if))
д/з(мой вариант):
import random
import tkinter as tk
def rand_color():
global new_color
list_ = ['White', 'Red', 'Yellow', 'Orange', 'Green', 'Blue', 'Purple', 'Pink', 'Brown', 'Grey']
index = random.randint(0, 9)
new_color = list_[index]
win.config(bg=new_color)
button_1.config(bg=new_color)
win = tk.Tk()
win.geometry('1000x600+220+80')
win.title('Random.BG_color')
button_1 = tk.Button(win,
text='Change Color',
command=rand_color)
button_1.place(x=460, y=255)
win.mainloop()
у меня лямбда не сработала, ошибки не выдаёт, но команда не работает, при нажатии на кнопку ничего не происходит
изменено: забыл лэйбл запаковать
Лучший
Определенно.
SUPER!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Пытаюсь зделать програму по ИМТ в tkinter но функцыя def не получаеться, сделай пожалуйста ролик как зделать такую прогу(с использываниям messagebox )
5:26
from random import*
root = Tk()
root.title("Test")
root.geometry("300x400+600+200")
root["bg"] = "#fff"
root.resizable(width=False, height=False)
photo = PhotoImage(file="icon.png")
root.iconphoto(False, photo)
def func():
s = "blue black white yellow green red brown aqua orange lime".split()
root["bg"] = choice(s)
btn1 = Button(text="Нажми", command=func)
btn1.pack()
root.mainloop()
А как работать с кнопками в массиве?
На пример изменить цвет?
Ответишь - подпишусь)
дз:
from tkinter import *
root = Tk()
root.geometry('400x400')
root.title('proga')
def s():
b1['state'] = DISABLED
b1 = Button(root, text='1',
)
b1.pack()
b2 = Button(root, text='2',
command=s)
b2.pack()
root.mainloop()
Я ОБОЖАЮ ТЕБЯ!!!
Я ТОЖЕ ОБ ЭТОМ СНИМАЮ!!
НО МЕНЯ НИКТО НЕ СМОТРЕТ....
Посмотрите. ХОТЯБЫ
Посмотрел. Но лучше бы не смотрел... Чувак, ты открываешь страницу, чтобы зачитать оттуда информацию, но даже это сделать не можешь.
😁
ДЗ
from tkinter import *
def counter():
global count
count += 1
button3['text'] = f'Счетчик: {count}'
if count % 2 == 1:
button1['state'] = DISABLED
button2['state'] = DISABLED
else:
button1['state'] = NORMAL
button2['state'] = NORMAL
count = 0
root = Tk()
root.geometry(f"400x500+100+200")
root.title("It's my app!")
button1 = Button(root, text = "Hello",
command = lambda: Label(root, text = "How're y? ").pack())
button2 = Button(root, text = "Hi",
command = lambda: Label(root, text = "Are you going to party? ").pack())
button3 = Button(root, text = f"Счетчик: {count}",
command = counter)
button1.pack()
button2.pack()
button3.pack()
root.mainloop()
А так спасибо за твои труды.
привет, подскажи, пожалуйста, какое приложение можно использовать, чтобы использовать модуль tkinter?
Блин я умнею
Зачем это писать?
Классно
btn4['text'] = f'Счетчик: {count}'
NameError: name 'btn4' is not defined
не могу разобраться в чем проблема
помогите пожалуйста
def counter():
global count
count+=1
btn4['text']=f'Счетчик : { count } '
Должно быть так.. У меня всё запускается.
не распаковал
Подскажите пожалуйста как сделать что бы нажималась первая кнопка, а счётчик выводил на 2ю кнопку? Не могу понять(((
def add_label():
label = tk.Label(win,text='Щёлк!',
bg='red', #цвет фона текста
fg='#000000', #цвет шрифта сделала чёрный
font=('Arial', 20,'bold'), #поменяла шрифт на эриал, сделала его крупнее и жирным
padx=10, #добавила отступы цвета фона шрифта с боков(рамочка)
pady=5)
label.pack()
def counter ():
global count
count+=1
btn2['text']=f'Танос щёлкнул: {count} раз'
count = 0
import tkinter as tk #сокращаем название
win =tk.Tk()
btn1 = tk.Button(win,text='Щелчок Таноса!',
command=add_label
)
btn2 = tk.Button(win,text=f'Танос щёлкнул: {count} раз',
command=counter
)
btn1.pack() #выводим кнопку
btn2.pack()
win.geometry("500x600+700+400") #Задала размер окна, двумя плюсами я указываю где появляется окно относительно левого угла в пикселях,
#можно создавать через переменные
win.resizable(False, False) # растягиваемое окно по умолчанию (True,True)первое ширина второе высота
win.mainloop()
import tkinter as tk
def counter_func():
global count
count+=1
but_print_counter['text'] = f'count - {count}'
def rand_color():
from random import choice as ch
a = '0123456789ABCDEF'
color = '#'+''.join([ch(a) for i in range(6)])
win['bg'] = color
def sizers():
global width,height
from random import randrange as rr
width = rr(500,1000,150)
height = rr(500,1000,150)
win.geometry(f'{width}x{height}')
def disabled_function():
if but1['state']==tk.NORMAL:
but1['state']=tk.DISABLED
but2['state']=tk.DISABLED
tk.Label(win,text='but1 and but2 is disabled').pack()
else:
but1['state'] = tk.NORMAL
but2['state'] = tk.NORMAL
tk.Label(win,text='but1 and but2 is normal').pack()
height,width = 500,500
count = 0
win = tk.Tk()
win.title('Disabled_App')
win.geometry(f'{width}x{height}')
win.resizable(False,False)
but_disabled = tk.Button(win,text='disabled/normal',command = disabled_function)
but_counter= tk.Button(win,text = 'counter',command = counter_func)#то что тебе нужно
but_print_counter = tk.Button(win,text=f'count - {count}')
but_random_cv = tk.Button(win,text='random color',command = rand_color)
but_geoma = tk.Button(win,text='WIDTH x HEIGHT',command=sizers)
but1=tk.Button(win,text='But1',command=lambda:tk.Label(win,text='Hi').pack(),state=tk.NORMAL)
but2=tk.Button(win,text='But2',command=lambda:tk.Label(win,text='bye').pack(),state=tk.NORMAL)
but1.pack()
but2.pack()
but_disabled.pack()
but_geoma.pack()
but_random_cv.pack()
but_counter.pack()
but_print_counter.pack()
win.mainloop()
вроде это
@@hoji1944 Спасибо!!!
@@Geistik6 всегда пожалуйста
from tkinter import *
import random
a= f"#{random.randrange(0x1000000):06x}"
def change_bg():
a=f"#{random.randrange(0x1000000):06x}"
w['bg']=a
w = Tk()
button1 = Button(text="hello",command=change_bg)
w.geometry("500x500+700+210")
button1.pack()
w.mainloop()
меняет цвет фона при нажатии кнопки
def color():
color = randint(0, 255)
color2 = randint(0, 255)
color3 = randint(0, 255)
a = hex(color)[2:].ljust(2, '0').upper()
b = hex(color2)[2:].ljust(2, '0').upper()
c = hex(color3)[2:].ljust(2, '0').upper()
d = '#' + a + b + c
win.config(bg=d)
функция для выбора полного рандома цвета
Никогда мне так подробно все не разжовывали...
import random as rn
def hex_code():
rn_hex_code = ""
char_list = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "A", "B", "C", "D", "E", "F"]
for i in range(6):
rn_hex_code += rn.choice(char_list)
return rn_hex_code
print(hex_code())
import tkinter as tk
import random
def btn():
global r
r = random.randint(0,5)
win.config(bg=mass[r])
r = random.randint(0,5)
win = tk.Tk()
a = 100
b = 300
win.geometry("600x600")
btn1 = tk.Button(win, text="Кнопка", bg="blue", command=btn)
btn1.pack()
mass = ["red", "blue", "green", "yellow", "purple", "orange"]
print(r)
win.mainloop()
Вот такое странное рандомное изменение цвета написал
def rand_color():
x = f'#{str(hex(randint(10,255)))[2:]}{str(hex(randint(10,255)))[2:]}{str(hex(randint(10,255)))[2:]}'
return x
win.config(bg=rand_color())
Домашнее задание то как делать? Раскрасить кнопки и расположить их на экране это одно , а логика взаимодействия с синтаксисом питона это другое. Голову сломал уже как к гребаному счетчику прикрутить замену state
Просидел вечер в итоге, прогуглил похожие примеры. Сделал. Помимо синтаксиса и логики, важно еще в каком месте находится блок который ты пишешь в самом коде. Боль