Добрый день! Курс очень понравился но есть один нюанс: 2:51 передать аргументы в кнопке можно. Достаточно написать функцию а потом: command = lambda: название функции(аргументы). То есть через лямбду функцию вызвать другую функцию и уже в нее передать аргументы. Спасибо еще раз за курс!
И как же это тебе поможет? Если даже вызывать функцию внутри анонимной функций и узнать к чему равен count и изменить словарь button это тебе не поможет а лишь добавит больше кода и ошибки
Замечательно. Спасибо большое. Оказалось, что стать спонсором совсем не так страшно. Зато ничего искать не надо, всё разжевывается, только успевай усваивать)))
импортировал модуль random и подставил в кнопке в command " def color(): c = ['white','black', 'yellow', 'orange', 'green', 'blue', 'purple'] win.config(background=random.choice(c)) "
функция для деактивации/активации кнопки: 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 )
Интересное видео, спасибо. Сечас как раз изучаю ткинтер. А вот как обстоит дело с обработкой некоторого достаточного массива кнопок? Экспериментировал с полем кнопок, создаваемых динамически через цикл. И это получается. А вот как узнать, какая кнопка в этом массиве, нажимается? Например, поле из 100 кнопок. Вручную писать функцию обработчик сто раз, это чересчур. Можно как-то иначе, обрабатывать нажатие, более автомаьичесаки?
Вопрос: А тут нет каких-то обработчиков событий типа onClick, onButtonDown, onButtonUp, onMove, onMouseOver...? Например, пока я веду курсор мыши над кнопкой - что-то происходит... И если я хочу при изменении размера окна изменить размер картинки... Что-то типа onResize...
Есть несколько строк текста с разным размером шрифта. Возможно ли это всё запихнуть в некий контейнер и чтобы при нажатии на любую область этого контейнера выполнялось событие? Грубо говоря нужно запихнуть в кнопку несколько виджетов, чтобы это всё было одной кнопкой
почему у меня все белое и после окончания строчки тоесть я что то написал и нажал ентер для следующей строчки то что я писал на прошлой строчке удалить нельзя?
Артём спасибо тебе за такой классный контент, продолжай в том же духе. У меня к тебе вопрос, можно ли в функцию которую мы создаём для кнопки, поставить ссылку на файл txt ? Например, кода мы меняли иконку нашего окна, мы ссылались на фото которую ранее мы скачали, можно ли такое сделать для кнопки, что бы нажав на кнопку у нас открылся лейбл с куча текстов? Очень сумбурно объяснил, но надеюсь ты понял суть
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 помог хД. Но команда классная
Единственное что, DISABLED и NORMAL это же не строка Это обьект tk.DISABLED и tk.NORMAL Не знаю, как у вас, но у меня ваш код не работает. Зато работает вот это: def locker(): global btn_wincolor btn_wincolor["state"] = tk.DISABLED btn_wincolor.pack() Это кнопка по нажатию на которую другая кнопка будет блокироваться
...... 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.
Дз.Функция случайного цвета: 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 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 )
это метод форматирования строк - f строки a = "python" b = "круто" # заключите переменную в {}, чтобы отобразить ее значение в выводе print(f"{a} это {b}.") вывод: python это круто. он забыл убрать с прошлого урока, где подставлял вместо размеров переменные с ними
Функция случайный фон: def random_bg(): color = random.choice(["black", "cyan", "magenta", "red", "blue", "gray" ]) win.configure(background=color) Если сделал через RGB - поделись!)
чтобы функция меняла выбранный параметр для всех кнопок делал список всех кнопок, который обходил в функции, но понимаю что должен быть путь покороче - подскажите как вызвать список с именами всех экземпляров класса Button (btn1, btn2, ...)
Я не понимаю одну вещь. Как я используя одну кнопку смогу передать значение другой. То есть как я могу передать 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 не за что, если возникают какие нибудь вопросы, попробуй погуглить, т.к я сам не понимал как изменять состояние кнопки, перепробовал все, таки не получилось. Потом решил загуглить, и сразу нашел ответ на этот вопрос
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()
Артем, подскажи пожалуйста, с чем может быть связана проблема - вот такой код не меняет цвет кнопки. Строка распаковки есть. При этом, если таким же образом параметр bg='red' прописываю в функции add_label - Питон создает кнопку с нужным цветом.
Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!
автору огромное спасибо за видео! вот задачка с рандомным фоновым цветом: 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()
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()
Подскажите пожалуйста как сделать что бы нажималась первая кнопка, а счётчик выводил на 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 import random win=tk.Tk() win.title('Графическая оболочка') win.geometry('640x480+50+50') photo=tk.PhotoImage(file='qq.png') win.iconphoto(False,photo) win.config(bg='black') def piska(): win.config(bg=f'#{random.randint(1,999999)}') onebtn=tk.Button(win,text='нажми для piska',command=piska,bg='blue',fg='red',font=('Times New Roman',50,'bold')) onebtn.pack() 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())
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) функция для выбора полного рандома цвета
Домашнее задание то как делать? Раскрасить кнопки и расположить их на экране это одно , а логика взаимодействия с синтаксисом питона это другое. Голову сломал уже как к гребаному счетчику прикрутить замену state
Просидел вечер в итоге, прогуглил похожие примеры. Сделал. Помимо синтаксиса и логики, важно еще в каком месте находится блок который ты пишешь в самом коде. Боль
Вы лучше чем Хауди, Дударь и Шпагин вместе взятые. Спасибо!
кто эти люди.
🧢
А Шпагин это кто?
Согласен
Спасибо огромное, невозможно оторваться! ваш канал -очень ценная находка!
Сложно новичку, но интересно, особенно когда видишь результаты труда, пусть и повтора за вами
Добрый день! Курс очень понравился но есть один нюанс: 2:51 передать аргументы в кнопке можно. Достаточно написать функцию а потом: command = lambda: название функции(аргументы). То есть через лямбду функцию вызвать другую функцию и уже в нее передать аргументы. Спасибо еще раз за курс!
И как же это тебе поможет? Если даже вызывать функцию внутри анонимной функций и узнать к чему равен count и изменить словарь button это тебе не поможет а лишь добавит больше кода и ошибки
Просто если даже изменить count, то не измениться самое число внутри button и нужно будет и count и button менять
пропустили момент, когда у функции есть аргументы. спасибо за урок:)
Замечательно. Спасибо большое. Оказалось, что стать спонсором совсем не так страшно. Зато ничего искать не надо, всё разжевывается, только успевай усваивать)))
Спасибо вам большое, вы единственный кто понятно, полно и без лишней спешки объясняет. Кто хочет чему- то научиться, вам сюда.
импортировал модуль random и подставил в кнопке в command "
def color():
c = ['white','black', 'yellow', 'orange', 'green', 'blue', 'purple']
win.config(background=random.choice(c)) "
функция для деактивации/активации кнопки:
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
Цвета можно так нарандомить f"#{random.randrange(0x1000000):06x}"
Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!
Очень информативно и помогает дополнительно к основным курсам, более понятно.Спасибо
спасибо за серию видеороликов, единственный канал на котором я смог найти нормальные уроки по этой библиотеке
6:47 Разрывная)
да, хорошая
Отличный материал, спасибо!
шикарные курсы по питону!! Спасибо!
Очень хороший урок!!
Это самое крутое объяснение которое я когда либо находил, спасибо огромное за твое время и труд
Рандомное изменение цветов по кнопке:
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])
Интересное видео, спасибо. Сечас как раз изучаю ткинтер. А вот как обстоит дело с обработкой некоторого достаточного массива кнопок? Экспериментировал с полем кнопок, создаваемых динамически через цикл. И это получается. А вот как узнать, какая кнопка в этом массиве, нажимается? Например, поле из 100 кнопок. Вручную писать функцию обработчик сто раз, это чересчур. Можно как-то иначе, обрабатывать нажатие, более автомаьичесаки?
Спасибо за урок! Хорошо как всегда!
Вопрос: А тут нет каких-то обработчиков событий типа onClick, onButtonDown, onButtonUp, onMove, onMouseOver...?
Например, пока я веду курсор мыши над кнопкой - что-то происходит...
И если я хочу при изменении размера окна изменить размер картинки...
Что-то типа onResize...
Есть несколько строк текста с разным размером шрифта. Возможно ли это всё запихнуть в некий контейнер и чтобы при нажатии на любую область этого контейнера выполнялось событие? Грубо говоря нужно запихнуть в кнопку несколько виджетов, чтобы это всё было одной кнопкой
Спасибо тебе добрый человек. Очень информативно, внятно и доходчиво! 🤝
Шутка на 6 минуте разорвала просто )))))))))))))))
Спасибо напишите как можно сделать чтобы текст в лейбл был по правому краю а не по середине
Спасибо огромное! все очень понятно, без лишних слов! 👍
по замене цвета
def bg_win():
col=['red', 'green', 'blue','pink', 'white', 'brown']
win.config(background=random.choice(col))
Пока смотрю и повторяю, всё так легко, а как начинаю сам.. затупливаю сразу)
кнопа срабатывает сразу без ожидания
Ваш урок помог разобраться, лайк!
почему у меня все белое и после окончания строчки тоесть я что то написал и нажал ентер для следующей строчки то что я писал на прошлой строчке удалить нельзя?
Артём спасибо тебе за такой классный контент, продолжай в том же духе. У меня к тебе вопрос, можно ли в функцию которую мы создаём для кнопки, поставить ссылку на файл txt ? Например, кода мы меняли иконку нашего окна, мы ссылались на фото которую ранее мы скачали, можно ли такое сделать для кнопки, что бы нажав на кнопку у нас открылся лейбл с куча текстов? Очень сумбурно объяснил, но надеюсь ты понял суть
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 Вот дз), сделал по-своему принципу😁
cveta = ['red','green','blue','black','white']
def random_color():
window['bg'] = random.choice(cveta)
b5=Button(window, text='рандомный цвет фона', command=random_color)
b5.pack()
4:02 для себя
Здравствуйте. Как, непосредственно, изменить параметры Label через Button?
Например: при нажатии кнопки - меняется цвет определённого текста.
btn['параметр'], например label1['bg'] = 'red
@@СергейЮдин-ч2г thank you
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 помог хД. Но команда классная
win=tk.Tk()
win.geometry(f"400x500+10+20")
win.title("input")
win.mainloop()
Спасибо! Помоги тебе бог, добрый человек!
А есть двухпозиционные кнопки? Типо переключателя, где есть вкл и выкл?
Радио батон)
@@egoroffchannel спасибо)
А как сворачивать окно в трэй и выводить всплывающие окошки из трея, вы узнаете в специальном выпуске, доступном только для спонсоров :)))
А шо поделать)
Спасибо Артем
Все понятно и интересно
Для рандомного выбора фона окна:
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 можно и так)
фрагмент для блокировки/разблокировки кнопок пятой кнопкой
#------------
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()
Это кнопка по нажатию на которую другая кнопка будет блокироваться
Расскажи подробно про Delate(), Entry и mainloop
ruclips.net/video/mLySBcS-6p0/видео.html
Как размещать кнопку и менять её размер?
Можем списатся?
как сделать так чтоб при нажатии откривалась указаная программа
МОжем спсатся?
Без глобал можно как то передать переменную в функцию?
Почему именно лямбда? А не обычная функция?
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 написать
Как сделать чтобы после нажатия кнопки окно закрывалось?
в функцию напиши break
......
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.
Дз.Функция случайного цвета:
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 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()
Интересует. Как указать кнопке чтобы при нажатии на неё запускался другой фаил в питоне со своей графической оболочкой (другая оболочка). Грубо говоря по кнопке из одного фаила на другой?
Функция для изменения состояния всех остальных кнопок:
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
)
А можно ли как-то функционал кнопок вынести в другие скрипты и запускать их из этого же скрипта (как в C#).
д/з(мой вариант):
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()
5:26
подскажите что обозначает " f " ? В win.geometry(f"400x500+100+200")
это метод форматирования строк - f строки
a = "python"
b = "круто"
# заключите переменную в {}, чтобы отобразить ее значение в выводе
print(f"{a} это {b}.")
вывод: python это круто.
он забыл убрать с прошлого урока, где подставлял вместо размеров переменные с ними
@@KrabDefense ничего не понял, но спасибо за ответ. А можно ссылку на тот урок, а то видео много еще ни все посмотрел.
@@БобЗлобный он там просто подставил подставил и ничего не говорил, просто забей "что такое f строки" тебе сразу выдаст :)
Функция случайный фон:
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)
чтобы функция меняла выбранный параметр для всех кнопок делал список всех кнопок, который обходил в функции, но понимаю что должен быть путь покороче - подскажите как вызвать список с именами всех экземпляров класса Button (btn1, btn2, ...)
Я не понимаю одну вещь. Как я используя одну кнопку смогу передать значение другой. То есть как я могу передать 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 не за что, если возникают какие нибудь вопросы, попробуй погуглить, т.к я сам не понимал как изменять состояние кнопки, перепробовал все, таки не получилось. Потом решил загуглить, и сразу нашел ответ на этот вопрос
Спасибо за урок!
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()
Ничего не работает, всё через пятую точку
Ты просто написал с 5 точкой
у меня лямбда не сработала, ошибки не выдаёт, но команда не работает, при нажатии на кнопку ничего не происходит
изменено: забыл лэйбл запаковать
Что за настройки и тема у тебя в PyCharm?
WarmNeon
@@egoroffchannel не нашел к сожалению(
@Tyr Tirov посмотри пожалуйста, если не трудно
@Tyr Tirov Спасибо большое
нажимая на btn3 мы добавляем каждый раз новые label. А как можно изменить текст новых label или одной из новых (добавленных) label?
Артем, подскажи пожалуйста, с чем может быть связана проблема - вот такой код не меняет цвет кнопки. Строка распаковки есть. При этом, если таким же образом параметр bg='red' прописываю в функции add_label - Питон создает кнопку с нужным цветом.
btn_4 = tk.Button(wind, text=f'счётчик{count}',
command=counter,
padx=14,
pady=16, bg='#E5C6EB')
Дай угадаю, ты на MacOS работаешь =)
Не переживай, у меня такая же тема
+ коммент выше тоже писал
ДЗ
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?
👍👍
Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!Спасибо за урок!
еще 1000 раз напиши лапоть
Лутший, все понял, спасибо!
лучший - пиши грамотно сопляк
Как двигать кнопки если её кудато хочеш вставить
тоже запнулся на моменте сдвига самой кнопки. И так и эдак, пока не получается ))
автору огромное спасибо за видео! вот задачка с рандомным фоновым цветом:
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))
Пытаюсь зделать програму по ИМТ в tkinter но функцыя def не получаеться, сделай пожалуйста ролик как зделать такую прогу(с использываниям messagebox )
Спасибо большое!)
btn4['text'] = f'Счетчик: {count}'
NameError: name 'btn4' is not defined
не могу разобраться в чем проблема
помогите пожалуйста
def counter():
global count
count+=1
btn4['text']=f'Счетчик : { count } '
Должно быть так.. У меня всё запускается.
не распаковал
дз:
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()
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()
Подскажите пожалуйста как сделать что бы нажималась первая кнопка, а счётчик выводил на 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 всегда пожалуйста
Спасибо огромное!
А как работать с кнопками в массиве?
На пример изменить цвет?
Ответишь - подпишусь)
😁
Большое вам спасибо😀😁🤪
Никогда мне так подробно все не разжовывали...
Определенно.
Класс!
7:39 Я удалил случайно это всё :(
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())
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()
меняет цвет фона при нажатии кнопки
при нажатии меняет фон в любой из возможных цветовых кодов
import tkinter as tk
import random
win=tk.Tk()
win.title('Графическая оболочка')
win.geometry('640x480+50+50')
photo=tk.PhotoImage(file='qq.png')
win.iconphoto(False,photo)
win.config(bg='black')
def piska():
win.config(bg=f'#{random.randint(1,999999)}')
onebtn=tk.Button(win,text='нажми для piska',command=piska,bg='blue',fg='red',font=('Times New Roman',50,'bold'))
onebtn.pack()
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())
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)
функция для выбора полного рандома цвета
Я ОБОЖАЮ ТЕБЯ!!!
Я ТОЖЕ ОБ ЭТОМ СНИМАЮ!!
НО МЕНЯ НИКТО НЕ СМОТРЕТ....
Посмотрите. ХОТЯБЫ
Посмотрел. Но лучше бы не смотрел... Чувак, ты открываешь страницу, чтобы зачитать оттуда информацию, но даже это сделать не можешь.
Домашка:
def change_state_button(button, state=tk.NORMAL):
button["state"] = state
def disable_all_buttons():
buttons = [button1, button2, button3, button4]
if all(map(lambda button: button["state"] == tk.NORMAL, buttons)):
for button in buttons:
change_state_button(button, tk.DISABLED)
else:
for button in buttons:
change_state_button(button)
Домашнее задание то как делать? Раскрасить кнопки и расположить их на экране это одно , а логика взаимодействия с синтаксисом питона это другое. Голову сломал уже как к гребаному счетчику прикрутить замену state
Просидел вечер в итоге, прогуглил похожие примеры. Сделал. Помимо синтаксиса и логики, важно еще в каком месте находится блок который ты пишешь в самом коде. Боль