Уроки Python / Модуль tkinter (работа с картинками)

Поділитися
Вставка
  • Опубліковано 15 січ 2025

КОМЕНТАРІ • 112

  • @wiseplat
    @wiseplat  4 роки тому +10

    ►► Все уроки по Python ua-cam.com/play/PLxiU3nwEQ4PHtLT8LzGAdcuzE-laotXps.html
    Пишите какие проекты вы делаете на Пайтон.

  • @fidgames1961
    @fidgames1961 4 роки тому +45

    КОД:
    from tkinter import *
    tk = Tk()
    canvas = Canvas(tk, width=500,height=500)
    canvas.pack()
    fish_obj = PhotoImage(file="fish.png")
    id_img = canvas.create_image(50,50,anchor=NW,image=fish_obj)
    print(id_img)
    import time
    for i in range(1,100):
    canvas.move(id_img,2,0)
    tk.update()
    time.sleep(0.02)
    ОБЪЯСНЕНИЕ:
    width=500 - высота
    height=500 - ширина
    canvas.pack() - активация
    fish_obj() - название переменной
    PhotoImage - фотография(тип объекта)
    file="fish.png" - название объекта
    id_img - название переменной
    canvas.create_image() - добавление объекта
    50,50,anchor=NW,image=fish_obj - место добавления объекта
    50,50 - координаты X,Y
    anchor=NW - угол, в который будет добавлен объект (здессь: сверху слева)
    print(id_img) - вывод на экран
    image=fish_obj - объект
    id_img - ID объекта
    import time - импортация модуля времени (time)
    canvas.move(id_img,2,0) - смещение
    2,0 - смещение по координатам X,Y
    tk.update() - обновление экрана
    time.sleep(0.02) - задержка по времени (без неё движения будут резкими)
    0.02 - время, на которе будет задержана анимация

  • @cikorchik
    @cikorchik 3 роки тому +18

    Можно не импортировать time. Вместо time.sleep(0.02) можно использовать tk.after(20) или canvas.after(20)

    • @smert_okupantam
      @smert_okupantam Рік тому

      у меня все три варианта одинаково задерживают старт программы и потом показывают окно с уже отрисованными объектами

  • @mazur_vg
    @mazur_vg 2 роки тому +3

    Великолепное видео! Давно, очень давно искал такое видео!

  • @САС-ь5ф
    @САС-ь5ф 3 роки тому +18

    Моргни если тебя держат в заложниках

    • @wiseplat
      @wiseplat  3 роки тому +5

      Привет 😀 да я только учусь говорить на публику 😀😀😀👍

  • @Dmitrii-Zhinzhilov
    @Dmitrii-Zhinzhilov Рік тому +1

    Олег, благодарю!

  • @andyworker5625
    @andyworker5625 2 роки тому +6

    А не подскажете, начал писать код в Pycharm - не появляется окошко для рисования... в чем может быть причина?

    • @ggya7025
      @ggya7025 10 місяців тому

      Полность удалить пайтон и переустановить

    • @timurmapper1908
      @timurmapper1908 9 місяців тому +1

      Установи вместо чарма норм пайтон

  • @НилюфарМаликова

    Очень доступно! Спасибо

  • @maxmkuslive3067
    @maxmkuslive3067 4 роки тому +15

    То что я искал 2 часа

    • @shiroyan7139
      @shiroyan7139 3 роки тому

      Не работает, картинка обрезанная, и на весь экран, а не как у него

    • @stas4101
      @stas4101 3 роки тому

      @@shiroyan7139 большая картинка? ищи 100 на 100

    • @matveykoval7154
      @matveykoval7154 2 роки тому

      Согласен

    • @matveykoval7154
      @matveykoval7154 2 роки тому

      @@shiroyan7139 Может ты не скачал модуль?!?- скачай на официальном сайте

    • @felix.taken0
      @felix.taken0 2 роки тому

      @@matveykoval7154 Даун Tkinter есть у всех он встроенный

  • @KenanShukurov-e3s
    @KenanShukurov-e3s Рік тому +1

    почему когда я пишу код для добавления картинки нажимаю на Run и дают ошибку?

  • @katrinfenkel5248
    @katrinfenkel5248 3 роки тому +1

    3:52 # "так как эта картинка лежит в этой же папке то мы путь не указываем"
    пи***ть, как учиться то? у меня картинка в другой папке. КАК ПУТЬ ТО УКАЗАТЬ?

  • @algoritmuz
    @algoritmuz 4 роки тому +2

    Thank you bro.

  • @Felaonile
    @Felaonile Рік тому +1

    Базированный Гигачад

  • @sai-youtube_2283
    @sai-youtube_2283 4 місяці тому +1

    Мне это нужно чтобы написать свой хамстер комбат😎😎😎😎

  • @МакарЯмпурин
    @МакарЯмпурин 3 роки тому +1

    Спасибо, отличный урок!

  • @_Peterhof_
    @_Peterhof_ 4 роки тому +1

    Олег, сорри оффтоп. Как иконку поменять в Tkinter так, чтобы при компиляции в exe через pyinstaller, например, и дальнейшей смене директории иконка сохранилась, не знаете случайно? Ну, собственно и без компиляции пайтоновский файл также перестаёт запускаться, если их с иконкой развести по разным папкам. То есть, метод iconbitmap работает только, когда все в одной коробке, как говорится... что-то не гуглится.. иконка, которая вместо «перышка» в окне программы

  • @nerves6401
    @nerves6401 4 роки тому +11

    В чём моя проблема?
    _tkinter.TclError: couldn't recognize data in image file "image.png"

    • @vitalypaketaaa6125
      @vitalypaketaaa6125 3 роки тому +1

      программист должен уметь гуглить

    • @said6434
      @said6434 3 роки тому +1

      @@vitalypaketaaa6125 но помогать тоже надо! может несмог сам найти ответ

    • @levzovg9450
      @levzovg9450 3 роки тому +2

      Спустя два месяца мучений с этой ошибкой я понял, просто нужно любой файл, который тебе нужен, конвертировать в png формат через любой конвертер в интернете(даже если картинка уже в формате png
      )

    • @НикитаАлександров-п7ц
      @НикитаАлександров-п7ц 3 роки тому +1

      @@levzovg9450 спасибо

    • @ЕгорСоловец-л1н
      @ЕгорСоловец-л1н 3 роки тому

      @@levzovg9450 Не обязательно, tkinter поддерживает 4 формата: """Widget which can display images in PGM, PPM, GIF, PNG format."""
      PPM это предельно простой формат цветного изображения, в отличие от сложных GIF и PNG его можно легко редактировать непосредственно, побайтно.
      f = open('file.ppm', mode="rb") # открыть файл в двоичном режиме
      IMAGE_DATA = f.read() # прочитать, записать содержимое файла в объект IMAGE_DATA
      IMAGE_DATA = bytearray(IMAGE_DATA) # поменять неизменяемый тип bytes на изменяемый bytearray
      После этого каждый субпиксель можно читать и редактировать по индексу (IMAGE_DATA[index]. Начало данных изображения вычисляешь так: len(IMAGE_DATA) - (img.height() * img.width()) * 3 , height и width это методы PhotoImage
      После этого:
      IMAGE_DATA = bytes(IMAGE_DATA) # перевести данные назад в тип bytes, т.к. bytearray tkinter не понимает
      img = tkinter.PhotoImage(data=IMAGE_DATA)
      Плюсы: это быстрее, чем PIL. А если вместо bytearray использовать массивы numpy и ускорить при помощи numba, то можно обработать изображение чуть не со скоростью компилируемых языков
      А так сохранять:
      f2 = open('x.ppm', mode="wb")
      f2.write(IMAGE_DATA)

  • @igrovil72
    @igrovil72 2 роки тому +1

    Что делать если у меня не хочет модуль импортироваться

  • @МаркВаривода-д2х
    @МаркВаривода-д2х 3 роки тому

    Спасибо огромное вам! Помогли

  • @johnnys.828
    @johnnys.828 3 роки тому

    Спасибо большое!

  • @CrazyHandMaker
    @CrazyHandMaker 4 роки тому +1

    Каким методом развернуть растр на заданный угол? В tkinter это вообще возможно?

  • @CVD-ip4yh
    @CVD-ip4yh 2 роки тому

    А можно ли это активировать с помощи команды def (при нажатии) кнопки и как это сделать

  • @GGSoft2009
    @GGSoft2009 2 роки тому

    спасибо!!!

  • @DogsInBox
    @DogsInBox 3 роки тому +2

    А как изобразить текст в данном окне? Помогите пожалуйста.

    • @regnad411
      @regnad411 3 роки тому +1

      from tkinter import *
      window = Tk()
      label = Label(window, text="Текст")
      label.pack()
      window.mainloop()

  • @romaosipov8895
    @romaosipov8895 2 роки тому

    perfect video

  • @СвятославРодинский

    Скажите, я думал, пытался, не получилось... Проблема такая: как сделать задний фон окна картинкой?

  • @egostan
    @egostan 2 роки тому +1

    а если мне нужно, чтобы снала появлялась картинка , потом текст, потом уже другая картинка и так 5 раз ?
    1.как создавать новые картинки или заменять старую
    2.почему у меня окно с картинкой открывается только в конце?

  • @ИсманКыязов-щ2у
    @ИсманКыязов-щ2у 4 роки тому +3

    пожалуйста покажите как указывать путь я не знаю где у меня python.

  • @kotbarsik_
    @kotbarsik_ 4 роки тому +1

    А как сделать масштабирование картинки?

  • @mphypma
    @mphypma Рік тому +1

    У нас на экране появилась рыба , классно
    Почему я так с этого ржу пхахахахахах

  • @Max-xg4fy
    @Max-xg4fy 4 роки тому

    большое спасибо

  • @jandosabdiraiym5623
    @jandosabdiraiym5623 3 роки тому

    thanks

  • @ganshauk1121
    @ganshauk1121 3 роки тому +1

    Так как в примере не заработало. Виджет с канвасом не отображается, переделал вот так: import tkinter
    root = tkinter.Tk()
    canvas = tkinter.Canvas(root)
    canvas.grid(row = 0, column = 0)
    photo = tkinter.PhotoImage(file = 'C:\\WORKSPASE\\PYTHON\\MytestProject\\vinni-pukh-v-png-64x64.png')
    canvas.create_image(50, 50, image=photo)
    root.mainloop()
    заработало, Почему?

  • @blaze6046
    @blaze6046 2 роки тому

    Привет, у меня картинки разных слоях и загораживают друг друга, что делать?

  • @korsarrr111
    @korsarrr111 2 роки тому

    У меня вопрос: надо ли через tk.geometry() менять размеры экрана, если создан canvas?

  • @DenisDestin
    @DenisDestin Рік тому

    Если поставить фоном картинку, то окажется что изображение имеет белый фон...никак не могу это победить.

  • @theflash2880
    @theflash2880 2 роки тому

    Как зделать так чтоб обьект не виходил за рамки канваса?

  • @Serene_Sage
    @Serene_Sage 2 роки тому

    Помогите, сделал картинку объект, сделал управление, теперь хочу 2 объект сделать как яблоко или что то другое, как мне сделать такое действие: Рыбка касается яблока и считается то что я яблоко съел и теперь яблоко в другом месте. Буду благодарен

  • @ДьяконВалерьянович

    Я Что то не понимаю. В пайтоне нельзя путь на другую папку указать в компе? Фотография обязательно должна находиться в основной папке с пайтаном? Я просто хочу пропустить папку с фотографиями и допустим сделать автоконтраст. Или обрезку заднего фона.)

  • @maxmkuslive3067
    @maxmkuslive3067 4 роки тому +3

    А эсли мое изображение что делать?

    • @wiseplat
      @wiseplat  4 роки тому

      Привет! В таком случае удали задний фон у изображения, пример показан здесь ua-cam.com/video/chYBGZ5dfiQ/v-deo.html

  • @proger3.0
    @proger3.0 4 роки тому +1

    Конечно у меня не так хорошо как в этом видео по немножку получается но тут пока 2 проблемы,1-эти функции не воспринимает в pycharm,пожалуйста объясните эту проблему или даже зделайте видео трансляцию,2-у меня не удалось зделать фон с объектом и создать файл png для снимка.наверное из-за этого не получилось?я могу показать вам результаты своего проекта через телеграмм и объясните эту проблему пожалуйста

  • @elnursh
    @elnursh 2 роки тому

    как я могу добавить функцию search в комбобокс, чтобы get_data тоже паралельно работала?
    from tkinter import *
    from tkinter import ttk
    import pandas as pd
    df = pd.read_csv("C:/Users/User/Desktop/ccssvv.csv")
    lst = df.companies.dropna().tolist()
    '''
    def search(event):
    value = event.widget.get()
    if value == '':
    box1['values'] = lst
    else:
    data = []
    for item in lst:
    if value.lower() in item.lower():
    data.append(item)
    box1['values'] = data
    '''
    def get_data(e):
    for i in lst:
    if box1.get() == i:
    box2.config(values=df[i].dropna().tolist())
    box2.current(0)
    root = Tk()
    root.title('Dropdowns')
    root.iconbitmap('C:/Users/User/Downloads/car.ico')
    root.geometry("800x400")
    # creating first Combobox
    box1 = ttk.Combobox(root, values=lst)
    box1.bind('', get_data)
    box1.pack(pady=20)
    # creating second Combobox
    box2 = ttk.Combobox(root, values=[''])
    box2.pack(pady=20)
    root.mainloop()

  • @deestr1x302
    @deestr1x302 4 роки тому +1

    как узнать где у меня python???

  • @Maks-cz9ud
    @Maks-cz9ud 4 роки тому +1

    Спасибо, Почему именно с лева в верху: NW Как будет с права верху? Рыбка плывет на зад )

    • @pavlom8882
      @pavlom8882 3 роки тому +1

      NW - nord (північ(верх)), west - (захід(ліво)), ліво + верх = зверху із лівого боку. ІЗІ

  • @maxmkuslive3067
    @maxmkuslive3067 4 роки тому

    А как сделать нажатия на картинку и будет выполнятса например a=2

  • @mayday352
    @mayday352 4 роки тому +1

    Хочу спросить. А можно рисунок canvas вывести на изображение(в jpg или png например)

    • @wiseplat
      @wiseplat  4 роки тому

      Привет! Попробуй использовать два Canvas объекта :)

    • @mayday352
      @mayday352 4 роки тому

      @@wiseplat Нет, вы не поняли. Я создал программу который рисует блок-схему кода на холсте. Теперь этот рисунок нужно как та сохранить и иметь возможность открывать как фото без программы. Есть такая возможность

    • @wiseplat
      @wiseplat  4 роки тому +1

      @@mayday352Вот смотри этот код :) и бери отсюда инфу как это сделать! Первый способ через PIL, Второй через экспорт в ps (postscript).
      from Tkinter import *
      import Image, ImageDraw
      width = 400
      height = 300
      center = height//2
      white = (255, 255, 255)
      green = (0,128,0)
      root = Tk()
      # Tkinter create a canvas to draw on
      cv = Canvas(root, width=width, height=height, bg='white')
      cv.pack()
      # PIL create an empty image and draw object to draw on
      # memory only, not visible
      image1 = Image.new("RGB", (width, height), white)
      draw = ImageDraw.Draw(image1)
      # do the Tkinter canvas drawings (visible)
      cv.create_line([0, center, width, center], fill='green')
      # do the PIL image/draw (in memory) drawings
      draw.line([0, center, width, center], green)
      # PIL image can be saved as .png .jpg .gif or .bmp file (among others)
      filename = "my_drawing.jpg"
      image1.save(filename)
      root.mainloop()

    • @wiseplat
      @wiseplat  4 роки тому +1

      @@mayday352 Привет! Вот смотри :) ua-cam.com/video/R4bu1R2LE8k/v-deo.html

  • @grimsmol6200
    @grimsmol6200 4 роки тому

    Что делать если изображение без фона но отображается с ним

  • @alexalexgood
    @alexalexgood 4 роки тому

    Я сделал фон окна чёрным, вывел canvas, фон canvasa сделал чёрным и у меня остался белый контур. Как его убрать?

  • @dimidroll9352
    @dimidroll9352 3 роки тому +1

    А что если нужно размножить эту картинку со сдвигом в право?

    • @wiseplat
      @wiseplat  3 роки тому

      Привет. Тогда используй цикл и дублируй картинку.

  • @ЕваПобедимова
    @ЕваПобедимова 3 роки тому +1

    А как сделать так, чтобы рыбка двигалась сначала вправо, а потом влево?

    • @j0k3y58
      @j0k3y58 2 роки тому

      canvas.move(id_img,0,2)

  • @maxmkuslive3067
    @maxmkuslive3067 4 роки тому

    А как сделать столкновение

  • @alexanderpadalka5708
    @alexanderpadalka5708 4 роки тому

  • @Н2О-ь7х
    @Н2О-ь7х 4 роки тому

    А как можно тоже самое на тёртл сделать?

  • @anna11533
    @anna11533 3 роки тому

    4:56 у меня выдаёт ошибку (работаю в IDLE)

    • @v1xohay
      @v1xohay 2 роки тому

      У меня тоже если ты уже с ней разобрался то пожалуйста помоги мне, я никак не могу ее исправить.

    • @neex1260
      @neex1260 2 роки тому

      @@v1xohay вы разобрались?

    • @v1xohay
      @v1xohay 2 роки тому

      @@neex1260 нет но уже не надо спасибо за ответ.

    • @neex1260
      @neex1260 2 роки тому

      Жаль, мне бы самому ответ пригодился

  • @vinopesca7691
    @vinopesca7691 3 роки тому

    Святой человек, в рай без очереди!!!

  • @СтаниславГригорьев-л1в

    Здравствуйте, можете мне пожалуйста помочь с проектом в Python?

  • @СмирновАртемий-о4с

    Помогите, пожалуйста. При запуске программы она хочет, чтобы я что-то ввел, но я не понимаю что. Я попытался ввести название переменной, но вывело вот это:

    • @said6434
      @said6434 3 роки тому

      ты картинку сохранил в папку с файлом пайтона? пересмотри заново ролик может где то что то пропустил

  • @Feilbot
    @Feilbot Рік тому

    Друг прикольнулся чтобы я Half life сделал. Я же не дурак, не буду смотреть гайды по взаимодействию картинок с кодом. Да... да..

  • @jcmofficialchannel
    @jcmofficialchannel Рік тому

    крайне не правильно ставить "*" в импорт,лишняя огромная нагрузка.

  • @utimij
    @utimij 2 роки тому

    no such file or directory

  • @vadimsmirnov1938
    @vadimsmirnov1938 3 роки тому +2

    Может быть это у меня одного проблема, но у меня рыбка не поплыла пока я не добавил вконце tk.mainloop()

  • @rintarou-san8546
    @rintarou-san8546 3 роки тому

    Выдаёт ошибку

  • @ПетрВ-р8ю
    @ПетрВ-р8ю Рік тому

    у меня рыбка внизу в центре

  • @R1seyyy
    @R1seyyy 4 роки тому

    Помоги пжжжж, я графический калькулятор пытаюсь сделать

  • @vitalypaketaaa6125
    @vitalypaketaaa6125 3 роки тому

    эта серия должна быть вместо предыдущей, а предыдущая вместо этой... как мне кажется

  • @user-sn3fd1xt1i
    @user-sn3fd1xt1i 3 роки тому

    ++++

  • @liddle204
    @liddle204 4 роки тому +1

    Куплинов до того ,как стал известен

    • @Mishmo1
      @Mishmo1 3 роки тому

      чеегоо? у него только очки такие же и все

  • @МолокоТин
    @МолокоТин 4 роки тому

    Я

  • @jandosabdiraiym5623
    @jandosabdiraiym5623 3 роки тому

    dhreh

  • @jandosabdiraiym5623
    @jandosabdiraiym5623 3 роки тому

    erurj

  • @Valeria-ut4eb
    @Valeria-ut4eb 2 роки тому

    DON`T WORK!!!!!!!

  • @ПлатонЩ
    @ПлатонЩ 3 роки тому

    херня урок , ничего не работает , одни ошибки !