• Как сделать обновление кода времени на пайтоне?

    SuckMyPython
    @SuckMyPython
    matrix.polling(none_stop=True)
    from tkinter import *
    import calendar
    import datetime
    
    now = datetime.datetime.now()
    
    root = Tk()
    root.title("time")
    root.geometry("400x250")
    root.resizable(width=False, height=False)
    
    delay = 1000
    
    def lbl_func():
        now = datetime.datetime.now()
        label.config(text=now)
        label.after(delay, lbl_func)
    
    label = Label(text=now, font="12", pady="10")
    label.pack()
    
    lbl_func()
    
    root.mainloop()
    Ответ написан
    Комментировать
  • Как сделать функцию нажатия ентера в entry tkinter?

    SuckMyPython
    @SuckMyPython
    matrix.polling(none_stop=True)
    def funcc(event):
        pass    #Something Do!
    
    root.bind('<Return>', funcc)
    Ответ написан
    Комментировать
  • Как обозначить событие нажатия на Esc в canvas tkinter?

    SuckMyPython
    @SuckMyPython
    matrix.polling(none_stop=True)
    def esc_pressed(event):
        print('esc_pressed')
    
    canvas.bind_all('<Escape>',esc_pressed)   #_all !     or <KeyPress-Escape>
    Ответ написан
    Комментировать
  • [Tkinter/Python] Как увеличить круг в Tkinter?

    SuckMyPython
    @SuckMyPython
    matrix.polling(none_stop=True)
    В данном примере задержка 100ms
    import tkinter as tk
    
    root = tk.Tk()
    root.wm_title("Circles and Arcs")
    
    ww = 1000
    wh = 1000
    sw = root.winfo_screenwidth()                   #Расположение окна по центру экрана
    sh = root.winfo_screenheight()                  #
    wx = (sw - ww)/2                                #
    wy = (sh - wh)/2                                #
    root.geometry('%dx%d+%d+%d' % (ww, wh, wx, wy)) #
    
    canvas = tk.Canvas(root, width=ww, height=wh, borderwidth=0, highlightthickness=0, bg="black")      #Канвас
    canvas.grid()
    
    size_kef = 10       #Кэф изначального размера шарика
    grow_kef = 5        #Кэф скорости роста
    grow_delay = 100    #Задержка в милисекундах
    
    x0 = ww/2-size_kef          #Установка изначального размера шарика
    y0 = wh/2-size_kef          #
    x1 = ww/2+size_kef          #
    y1 = wh/2+size_kef          #
    
    coordx = x0, y0, x1, y1     #
    
    orb = canvas.create_oval(coordx, fill="blue", outline="", width=4)     #Шарик
    
    def stop():                                     #Завершение роста по достижению границ окна
        print("stop")
        canvas.itemconfig(orb, fill="green")
    
    def grow():
        global x0, y0, x1, y1
        print((x1-x0))
        
        x0 -= grow_kef              #Изменение размера шарика
        y0 -= grow_kef              #
        x1 += grow_kef              #
        y1 += grow_kef              #
        coordx = x0, y0, x1, y1     #
        canvas.coords(orb, coordx)  #
    
        if (x1-x0)<=ww or (y1-y0)<=wh:
            canvas.after(grow_delay, grow)          #Обращение функции к самой себе через задержку (.after())
    
        if (x1-x0)>=ww or (y1-y0)>=wh:              #Здесь ограничение на рост (граница - размеры окна)
            stop()
    
    grow()      #Первичный вызов функции
    
    root.mainloop()
    Ответ написан
    Комментировать
  • Как сделать линию tkinter?

    SuckMyPython
    @SuckMyPython
    matrix.polling(none_stop=True)
    Управление на колёсико [Окно и канвас создайте сами]
    #Импорты
    from tkinter.font import Font
    
    #<<<<<<<<<<<<<<<<<<<<<<<
    #Создание окна и канваса
    #>>>>>>>>>>>>>>>>>>>>>>>
    
    kef1 = 1.13     #Кэф изменения длины линии (↑↑)
    kef2 = kef1*2   #Кэф изменения расстояния вниз от текста (↑↓)    "2" тоже норм
    kef3 = 5        #Шаг изменения величины шрифта (↑↑)
    kef4 = 1        #Кэф изменения толщины линии (↑↑)
    font_size = 10  #Размер шрифта
    font = Font(family="TkDefaultFont", size=font_size, weight="bold")  #Параметры шрифта
    line_metric = font.metrics("linespace")     #Получение размера шрифта
    clr_text = 'black'  #Цвет текста
    clr_line = 'red'    #Цвет линии
    line_w = 4          #Базовая толщина линии
    
    line_l = line_metric*kef1   #Первичная длина линии
    
    text = canvas.create_text(200,200, text='TEXT', font=font, fill=clr_text)                               #Создание текста на канвасе
    x, y = canvas.coords(text)                                                                              #Получение координат центра текста
    line = canvas.create_line(x-line_l,y+line_l/kef2,x+line_l,y+line_l/kef2, width=line_w, fill=clr_line)   #Создание линии на канвасе
    
    def Wh_rot(event):
        global font_size, line_w, kef3, kef4
        if event.num == 4 or event.delta == 120:    #Определение стороны вращения Mouse_Wheel
            font_size+=kef3     #Изменение значения размера шрифта (+)
            line_w+=kef4        #Изменение толщины линии (+)
            font = Font(family="TkDefaultFont", size=font_size, weight="bold")    #Параметры шрифта
            canvas.itemconfig(text, font=font)  #Изменение размера шрифта на канвасе (+)
            
            line_metric = font.metrics("linespace") #Получение размера шрифта
            line_l = line_metric*kef1               #Изменение значения длины линии (+)
            x, y = canvas.coords(text)              #Получение координат центра текста
            crd = x-line_l, y+line_l/kef2, x+line_l, y+line_l/kef2  #Присваивание значения длины координатам линии
            canvas.coords(line, crd)                #Изменение длины линии на канвасе (+)
            canvas.itemconfig(line, width=line_w)   #Изменение толщины линии на канвасе (+)
    
        else:   #(-)
            font_size-=kef3
            if font_size<5:     #Ограничение отрицательных величин
                font_size=5     #^
            line_w-=kef4
            if line_w<1:        #^
                line_w=1        #^
            font = Font(family="TkDefaultFont", size=font_size, weight="bold")
            canvas.itemconfig(text, font=font)
            
            line_metric = font.metrics("linespace")
            line_l = line_metric*kef1
            x, y = canvas.coords(text)
            crd = x+line_l, y+line_l/kef2, x-line_l, y+line_l/kef2
            canvas.coords(line, crd)
            canvas.itemconfig(line, width=line_w)
    
    root.bind('<MouseWheel>', Wh_rot)   #Крути колесо мыши
    
    root.mainloop()
    Ответ написан
    Комментировать
  • Как обработать событие Alt + Esc в tk python3?

    SuckMyPython
    @SuckMyPython
    matrix.polling(none_stop=True)
    >pip install keyboard
    import keyboard
    
    def action():
        print("action")
    
    keyboard.add_hotkey("alt + escape", lambda: action(), suppress=True)   #suppress - on/off обработки системных комбинаций (True - off)
    Ответ написан
    Комментировать
  • Как в tkinter задать последовательность команд при нажатии на кнопку?

    SuckMyPython
    @SuckMyPython
    matrix.polling(none_stop=True)
    Don't use time.sleep()
    Use element.after(delay, do_smth)

    from tkinter import *
    from PIL import Image, ImageTk
    
    w = Tk()
    
    i=j=0
    
    img1 = Image.open("1.png")
    img2 = Image.open("2.png")
    img3 = Image.open("3.png")
    
    image1 = ImageTk.PhotoImage(img1)
    image2 = ImageTk.PhotoImage(img2)
    image3 = ImageTk.PhotoImage(img3)
    
    img_list = [image1, image2, image3]
    text_list = ['Ожидание','Ожидание.','Ожидание..','Ожидание...']
    
    text_delay = 500    #Настройка задержки изменения текста
    img_delay = 1000    #Настройка задержки изменения картинки
    
    text_cicle = 3      #Настройка количества циклов изменения текста
    img_cicle = 2       #Настройка количества циклов изменения картинок
    
    def imgTV_end():
        print("akbar")
        lbl.configure(text = 'Опа!', image='')
    
    def img_func():
        global i,j
        lbl.configure(image = img_list[i])
        print(i)
        print(j)
        i+=1
        if i>len(img_list)-1:
            i=0
    
        if j<len(img_list)*img_cicle:
            lbl.after(img_delay, img_func)
    
        j+=1
        if j>len(img_list)*img_cicle:
            j=0
            i=0
            imgTV_end()
    
    def click():
        global i,j
        lbl.configure(text = text_list[i])
    
        i+=1
        if i>len(text_list)-1:
            i=0
    
        if j<len(text_list)*text_cicle:
            lbl.after(text_delay, click)
    
        j+=1
        if j>len(text_list)*text_cicle:
            j=0
            i=0
            img_func()
    
    lbl = Label(text = '')
    lbl.pack()
    
    btn = Button(text='Жмяк', command=click)
    btn.pack()
    
    w.mainloop()
    Ответ написан
    Комментировать
  • Запускаю скрипт, а в вывод выводит слово "Python", и так много раз, что делать?

    SuckMyPython
    @SuckMyPython
    matrix.polling(none_stop=True)
    Я так и не понял, чего ты хотел, но просто убери "python3 " в 15-ой строке; такое явное указание на версию пайтона уже лишнее, запускай свой 'main.py' без него!
    from time import sleep
    import os
    
    process_name = 'main.py'
    
    def process_exists():
        call = 'ps ax | grep %s' % process_name
        if not process_name in call:
            return True
    
    while True:
        try:
            a = process_exists()
            if a != True :
                os.system(process_name)
            sleep(2)
        except KeyboardInterrupt:
            break

    OR
    from time import sleep
    import os
    
    def process_exists():
        if not 'main.py' in 'ps ax | grep main.py':
            return True
    
    while True:
        try:
            if process_exists() != True :
                os.system('main.py')
            sleep(2)
        except KeyboardInterrupt:
            break

    Этот код будет просто проверять наличие файла "main.py" и раз в 2 секунды выполнять его...
    Ответ написан
  • Python selenium, как указать путь относительно скрипта?

    SuckMyPython
    @SuckMyPython
    matrix.polling(none_stop=True)
    driver = webdriver.Chrome('folder\chromedriver.exe')
    #or
    driver = webdriver.Chrome(r'folder/chromedriver.exe')
    #or
    driver = webdriver.Chrome('chromedriver.exe')
    Ответ написан
    Комментировать
  • Можно ли менять фото при нажатии на Inline кнопку?

    SuckMyPython
    @SuckMyPython
    matrix.polling(none_stop=True)
    @bot.message_handler(commands=["editphoto"])
    def editfoto(message):
    	try:
    		kbi = telebot.types.InlineKeyboardMarkup()
    		btn = telebot.types.InlineKeyboardButton(text="Кнопка", callback_data='btn1')
    		kbi.add(btn)    #!		
    		foto1 = open('ozerx/botsend/photo1.png', 'rb')
    		bot.send_photo(message.chat.id, foto1, caption = "caption", reply_markup = kbi)
    	except:	
    		bot.send_message(message.chat.id, "Бот не смог отправить фото!")
    
    @bot.callback_query_handler(func=lambda call: True)
    def clbk(call):	
    	if call.data == 'btn1':
    		try:
    			foto2 = open('ozerx/botsend/photo2.png', 'rb')
    			bot.edit_message_media(media=telebot.types.InputMedia(type='photo', media=foto2, caption = "noitpac"), chat_id=call.message.chat.id, message_id=call.message.message_id)		
    		except:	
    			bot.send_message(call.message.chat.id, "Бот не смог изменить фото!")
    Ответ написан
    Комментировать
  • Telegram бот прячет кнопки. Как исправить?

    SuckMyPython
    @SuckMyPython
    matrix.polling(none_stop=True)
    one_time_keyboard=False
    Ответ написан
    Комментировать
  • Как перезагрузить телеграмм бот?

    SuckMyPython
    @SuckMyPython
    matrix.polling(none_stop=True)
    import os #импортируем модуль "os"
    
    @bot.message_handler(commands=["restart"]) #вызов по команде /restart; можно сделать и на кнопку
    def restart(message):
    	pid = str(os.getpid()) #получаем ProcessID запущенного бота
    	restarter = open('restarter.bat', 'w') #открываем/создаем батник
    	restarter.write('Taskkill /PID ' + pid + ' /F\nTIMEOUT /T 5 /NOBREAK\ncd C:\\Users\\smp\\Desktop\\SMP\\\nsmp.py') #записываем скрипт в батник		
    	restarter.close() #закрываем отредактированный батник
    	os.system('C:/Users/smp/Desktop/SMP/restarter.bat') #запускаем наш батник
    Ответ написан
  • Команда /stop для бота?

    SuckMyPython
    @SuckMyPython
    matrix.polling(none_stop=True)
    import os
    
    @bot.message_handler(commands=["stop"])
    def stop(message):
    	if message.from_user.username == cfg.Father:	
    		pid = str(os.getpid())
    		stoper = open('ozerx/stoper.bat', 'w')
    		stoper.write("Taskkill /PID " + pid + " /F")
    		stoper.close()
    		os.system('C:/Users/smp/Desktop/SMP/ozerx/stoper.bat')
    	else:
    		bot.send_message(message.chat.id, "Ты не Создатель бота; у тебя нет админ-прав, проваливай!")
    Ответ написан
    1 комментарий
  • Как исправить ошибку "name 'message' is not defined" в Телеграм Боте?

    SuckMyPython
    @SuckMyPython
    matrix.polling(none_stop=True)
    Ту вообще многое неправильно. Вот так будет лучше:
    # -*- coding: utf-8 -*-
    #^^^Если используешь русский текст указывай кодировку на всякий случай.
    
    import telebot
    from telebot import types
    
    token = 'здесьможетбытьвашатокешка'
    bot = telebot.TeleBot(token)
    
    @bot.message_handler(commands=['start'])
    def start_message(message):
    	bot.send_message(message.chat.id, 'Меня зовут бот. Чем могу вам помочь?')	#Здесь не надо отсылать клавиатуру, тем более ту которая не создана!
    
    @bot.message_handler(content_types=['text'])
    def get_text_messages(message):
    	kb = types.ReplyKeyboardMarkup()
    	kb.row('Калькулятор','Расписание')
    	kb.row('О нас','Помощь')
    	kb.row('Обратная связь')
    	bot.send_message(message.chat.id, 'К сожалению я еще не умею читать текст. Воспользуйтесь главным меню:', reply_markup=kb)	#Отправка меню
    	#bot.send_message(message.chat.id, "Выберите пункт меню:", reply_markup=markup) - Эта строка вообще лишняя, главное меню отправляется строкой выше.
    
    bot.polling(none_stop=True, interval=0)
    Ответ написан
    Комментировать
  • Как в боте telegram вызвать анимацию конфетти?

    SuckMyPython
    @SuckMyPython
    matrix.polling(none_stop=True)
    Это является встроенной функцией при ответах на опросниках, так что на данный момент никак. Официальный ответ с их сайта:5f02b524c64b4746567935.png
    Ответ написан
    Комментировать
  • InlineKeyboardMarkup ReplyKeyboardMarkup как сделать чтобы появились после одного сообщения?

    SuckMyPython
    @SuckMyPython
    matrix.polling(none_stop=True)
    Дело было вечером - делать было нечего. Разнёс по модулям, но разберёшься (всё в одной директории). Кое где переделал, кое где добавил english. Главное следи за структурой сперва callback на inline, потом на reply кнопки. Вместо картинки вмазал стикер, ну это так, что под рукой было.
    P.S. Токен не забудь свой вставить в cfg.

    Main.py (Главный модуль)
    # -*- coding: utf-8 -*-
    import telebot, cfg, kb, lg
    from telebot import types
    from requests import get
    
    bot = telebot.TeleBot(cfg.token)
    
    @bot.message_handler(commands=['start'])
    def start(message):
    	bot.send_sticker(message.chat.id, "CAACAgUAAxkBAAIHg18CC9ooVxBjT62AL3MZT_liQgUtAAKJAwAC6QrIA9kfvAIjYHAXGgQ")	#bot.send_photo(message.chat.id,open("C:\\ЕМБ.jpg","rb"))
    	bot.send_message(message.chat.id, lg.hello1u + message.from_user.first_name + lg.hello2u)
    	bot.send_message(message.chat.id, lg.hello1e + message.from_user.first_name + lg.hello2e, reply_markup=kb.ikb1)	
    
    @bot.callback_query_handler(func=lambda c:True)
    def cbinline(c):
    	if c.data == lg.ukr:
    		bot.send_message(c.message.chat.id, lg.razdelu, reply_markup=kb.ikb2u)	
    		bot.send_message(c.message.chat.id, lg.umusthave ,reply_markup=kb.rkbu)	
    
    	elif c.data == lg.eng:
    		bot.send_message(c.message.chat.id, lg.razdele, reply_markup=kb.ikb2e)	
    		bot.send_message(c.message.chat.id, lg.emusthave ,reply_markup=kb.rkbe)
    		
    	elif c.data == lg.ibtn1u:
    		bot.send_message(c.message.chat.id, lg.txt1u)
    
    	elif c.data == lg.ibtn2u:
    		bot.send_message(c.message.chat.id, lg.txt2u)
    
    	elif c.data == lg.ibtn3u:
    		bot.send_message(c.message.chat.id, lg.txt3u)	
    
    	elif c.data == lg.ibtn4u:
    		bot.send_message(c.message.chat.id, lg.txt4u)
    
    	elif c.data == lg.ibtn5u:	
    		bot.send_message(c.message.chat.id, lg.txt5u)
    
    	elif c.data == lg.ibtn1e:
    		bot.send_message(c.message.chat.id, lg.txt1e)
    		
    	elif c.data == lg.ibtn2e:
    		bot.send_message(c.message.chat.id, lg.txt2e)
    		
    	elif c.data == lg.ibtn3e:
    		bot.send_message(c.message.chat.id, lg.txt3e)
    		
    	elif c.data == lg.ibtn4e:
    		bot.send_message(c.message.chat.id, lg.txt4e)
    		
    	elif c.data == lg.ibtn5e:
    		bot.send_message(c.message.chat.id, lg.txt5e)
    		
    @bot.message_handler(content_types=['text'])
    def cbreply(message):	
    	if message.text == lg.rbtn1u:
    		bot.send_message(message.chat.id, lg.hello1u + message.from_user.first_name + lg.hello2u)
    		bot.send_message(message.chat.id, lg.hello1e + message.from_user.first_name + lg.hello2e, reply_markup=kb.ikb1)
    
    	elif message.text == lg.rbtn2u:
    		bot.send_message(message.chat.id, lg.endu, reply_markup=kb.kbsu)	
    
    	elif message.text == lg.rbtn1e:
    		bot.send_message(message.chat.id, lg.hello1u + message.from_user.first_name + lg.hello2u)
    		bot.send_message(message.chat.id, lg.hello1e + message.from_user.first_name + lg.hello2e, reply_markup=kb.ikb1)
    		
    	elif message.text == lg.rbtn2e:
    		bot.send_message(message.chat.id, lg.ende, reply_markup=kb.kbse)	
    
    if __name__ == '__main__':
    	bot.polling(none_stop=True)


    Cfg.py (Модуль конфига)
    token = 'цыфры:буквы'
    url = "https://kmu.u.ua/oplata/"


    Kb.py (Модуль клавиатур/кнопок)
    # -*- coding: utf-8 -*-
    import telebot, lg, cfg
    from telebot import types
    
    #Это сокращения клавитарских выражений
    tikm = types.InlineKeyboardMarkup
    trkm = types.ReplyKeyboardMarkup
    tikb = types.InlineKeyboardButton
    
    #start
    ikb1 = tikm()
    ibtn1 = tikb(text=lg.ukr, callback_data=lg.ukr)
    ibtn2 = tikb(text=lg.eng, callback_data=lg.eng)
    ikb1.add(ibtn1, ibtn2)
    
    #Ukr main kb
    ikb2u = tikm()
    ibtn1 = tikb(text=lg.ibtn1u, callback_data=lg.ibtn1u)
    ibtn2 = tikb(text=lg.ibtn2u, callback_data=lg.ibtn2u)
    ibtn3 = tikb(text=lg.ibtn3u, callback_data=lg.ibtn3u)
    ibtn4 = tikb(text=lg.ibtn4u, callback_data=lg.ibtn4u)
    ibtn5 = tikb(text=lg.ibtn5u, url=cfg.url)
    ikb2u.add(ibtn1, ibtn2)
    ikb2u.add(ibtn3, ibtn4)
    ikb2u.add(ibtn5)
    
    #Eng main kb
    ikb2e = tikm()
    ibtn1 = tikb(text=lg.ibtn1e, callback_data=lg.ibtn1e)
    ibtn2 = tikb(text=lg.ibtn2e, callback_data=lg.ibtn2e)
    ibtn3 = tikb(text=lg.ibtn3e, callback_data=lg.ibtn3e)
    ibtn4 = tikb(text=lg.ibtn4e, callback_data=lg.ibtn4e)
    ibtn5 = tikb(text=lg.ibtn5e, url=cfg.url)
    ikb2e.add(ibtn1, ibtn2)
    ikb2e.add(ibtn3, ibtn4)
    ikb2e.add(ibtn5)
    
    #Tostart/toend
    rkbu = trkm(True, True, row_width=1)
    rkbu.add(lg.rbtn1u, lg.rbtn2u)
    
    rkbe = trkm(True, True, row_width=1)
    rkbe.add(lg.rbtn1e, lg.rbtn2e)
    
    #End keyboard
    kbsu = trkm(True, True, row_width=1)
    kbsu.add(lg.rbtn1u)
    
    kbse = trkm(True, True, row_width=1)
    kbse.add(lg.rbtn1e)


    Lg.py (Модуль текста)
    #Buttons
    ukr = "Українська"
    eng = "English"
    
    ibtn1u = "Вступ"
    ibtn2u = "Післядипломна освіта"
    ibtn3u = "Студенту"
    ibtn4u = "Довідник контактів"
    ibtn5u = "Реквізити-Оплата"
    
    ibtn1e = "Introduction"
    ibtn2e = "Postgraduate education"
    ibtn3e = "To student"
    ibtn4e = "Contacts Directory"
    ibtn5e = "Details-Payment"
    
    rbtn1u = "Початок"
    rbtn2u = "Кінець"
    
    rbtn1e = "To the begining"
    rbtn2e = "To the end"
    
    #Text
    hello1u = "Доброго дня "
    hello2u = ", Я бот-консультант Київського медичного Університету. Радий Вас вітати.Оберіть будь ласка мову спілкування.\n"
    hello1e = "Good day "
    hello2e = "I am a chat bot of Kyiv Medical University. Glad to welcome you. Please choose the language of communication."
    
    razdelu = "Оберіть будь ласка розділ який Вас цікавить."
    razdele = "Please select the section that interests you."
    
    umusthave = "Також ви можете перемещатся за допомогою кнопок внизу."
    emusthave = "You can also navigate using the buttons below."
    
    txt1u = "Это текст после нажатия 'Вступ'"
    txt2u = "Это текст после нажатия 'Післядипломна освіта'"
    txt3u = "Это текст после нажатия 'Студенту'"
    txt4u = "Это текст после нажатия 'Довідник контактів'"
    txt5u = "Это текст после нажатия 'Реквізити-Оплата'"
    
    txt1e = "Это текст после нажатия 'Introduction'"
    txt2e = "Это текст после нажатия 'Postgraduate education'"
    txt3e = "Это текст после нажатия 'To student'"
    txt4e = "Это текст после нажатия 'Contacts Directory'"
    txt5e = "Это текст после нажатия 'Details-Payment'"
    
    endu = "Вы попали в конец!"
    ende = "You in the end!"
    Ответ написан
    Комментировать
  • Как сделать очищение после каждого нажатия кнопки?

    SuckMyPython
    @SuckMyPython
    matrix.polling(none_stop=True)
    Если добавить e2.delete(first=0,last=100) вначале функции всё удаляется!

    def converter():
        e2.delete(first=0,last=100)
        a = kilometry.get()
        a = float(a)
        result = float(a * 0.621371)
    
        e.delete(first=0,last=100)
        e2.insert(0, str(result) + " миль")


    Первое поле вы очищаете, в чём проблема сделать тоже самое со вторым?)
    Ответ написан
    Комментировать
  • Почему на кнопке, созданной с помощью tkinter на Python, не появляется изображение?

    SuckMyPython
    @SuckMyPython
    matrix.polling(none_stop=True)
    Добавьте album_button.image = image перед размещением кнопки

    ***
        for album_s in albums:
            image = ImageTk.PhotoImage(file = str(album_s))
            album_button = Button(root,
                                  image = image,
                                  width = 120, height = 120,
                                  command = lambda: print('click'))
            album_button.image = image
            album_button.pack()
    create_albums()
    ***
    Ответ написан
    1 комментарий
  • Как на python создать файл?

    SuckMyPython
    @SuckMyPython
    matrix.polling(none_stop=True)
    Комментировать
  • Как удалять объекты в canvas python?

    SuckMyPython
    @SuckMyPython
    matrix.polling(none_stop=True)
    Готово!

    # -*- coding: utf8 -*-
    from tkinter import*
    import tkinter.ttk as ttk
    
    root = Tk()
    
    canv = Canvas(root, width=120, height=50)
    canv.pack()
    
    def click1(self):
    	canv.delete(z1)
    
    def click2(self):
    	canv.delete(z2)
    
    def click3(self):
    	canv.delete(z3)
    	
    z1 = canv.create_text(20, 20, anchor=W, font=("Purisa", 20), text = 1, tag=1)
    z2 = canv.create_text(50, 20, anchor=W, font=("Purisa", 20), text = 2, tag=2)
    z3 = canv.create_text(80, 20, anchor=W, font=("Purisa", 20), text = 3, tag=3)
    
    canv.tag_bind(z1, '<Button-1>', click1)
    canv.tag_bind(z2, '<Button-1>', click2)
    canv.tag_bind(z3, '<Button-1>', click3)
    
    root.mainloop()


    Но, если вам нужно что-то вроде игры на основе рандома то вот:
    # -*- coding: utf8 -*-
    from tkinter import*
    import tkinter.ttk as ttk
    import random
    
    root = Tk()
    root.geometry("500x500")
    
    def z0():
    	btn.destroy()
    	canv = Canvas(root, width=500, height=500)
    	canv.pack()
    
    	def click(self):
    		global rin		
    		global num
    		canv.delete(num)
    
    		dbrin = rin
    		print(dbrin)
    
    		z1()
    		
    	def z1():
    		global rin
    		global num
    		rin = random.SystemRandom().choice(["1", "2", "3", "4", "5", "6", "7", "8", "9", "0"])
    		xy = random.SystemRandom().choice(["50", "100", "150", "200", "250", "300", "350", "400", "450"])
    		yx = random.SystemRandom().choice(["450", "400", "350", "300", "250", "200", "150", "100", "50"])
    
    		x1 = xy
    		y1 = yx
    		
    		num = canv.create_text(x1, y1, anchor=W, font=("Purisa", 20), text = rin)
    		canv.tag_bind(num, '<Button-1>', click)
    
    	z1()
    
    btn = Button(root, text="START", width=10, height=5, fg="black", command=z0)
    btn.pack()
    
    root.mainloop()
    Ответ написан
    Комментировать