Python-сообщество
- Начало
- » GUI
- » Как сделать Фон-картинку для Tk окна?
#1 Окт. 5, 2008 09:58:18
Albert.Novikov От: Зарегистрирован: 2008-10-04 Сообщения: 13 Репутация: 0 Профиль Отправить e-mail
Как сделать Фон-картинку для Tk окна?
Нужно сделать фон окна Tk из PNG картинки, как это можно сделать?
Отредактировано (Окт. 5, 2008 13:23:33)
#2 Окт. 5, 2008 14:15:43
Ferroman От: Зарегистрирован: 2006-11-16 Сообщения: 2759 Репутация: 1 Профиль Отправить e-mail
Как сделать Фон-картинку для Tk окна?
src_image = Image.open()
img = ImageTk.PhotoImage(src_image)
canvas = Canvas(root, width=400, height=400) # канвас на котором будм рисовать и размщать картинки
e = Button(canvas, text='Ok') # контрол для примра который бедт на канвасе
canvas.pack()
canvas.create_image(50, 10, image = img, anchor = NW) # рисуем фонувую картинку
canvas.create_window(60, 50, window=e) # размещаем кнопку поверх карнтинки
Я вот только не совсем понимаю — почему Tk? Я бы его не выбрал — информации очень мало, и она не полная… wx/qt значительно легче — там практически на решение любой проблемы уходит 5-10 минут поиска.
#3 Окт. 5, 2008 15:41:38
igor.kaist От: Зарегистрирован: 2007-11-12 Сообщения: 1879 Репутация: 3 Профиль Отправить e-mail
Как сделать Фон-картинку для Tk окна?
Инфы по тк, достаточно, просто нужно уметь искать.. Куда бы вынести на общее обозрение? Есть доки, в том числе и на русском. И как я уже много раз говорил, tk не обязательно должен быть не красив.. Я сейчас делаю очень даже красивое приложение на нем.. Есть замечательная вещь это Python wrapper for Тile
#4 Окт. 5, 2008 15:44:04
Albert.Novikov От: Зарегистрирован: 2008-10-04 Сообщения: 13 Репутация: 0 Профиль Отправить e-mail
Как сделать Фон-картинку для Tk окна?
src_image = Image.open()
img = ImageTk.PhotoImage(src_image)
canvas = Canvas(root, width=400, height=400) # канвас на котором будм рисовать и размщать картинки
e = Button(canvas, text='Ok') # контрол для примра который бедт на канвасе
canvas.pack()
canvas.create_image(50, 10, image = img, anchor = NW) # рисуем фонувую картинку
canvas.create_window(60, 50, window=e) # размещаем кнопку поверх карнтинки
Я вот только не совсем понимаю — почему Tk? Я бы его не выбрал — информации очень мало, и она не полная… wx/qt значительно легче — там практически на решение любой проблемы уходит 5-10 минут поиска.
Хмм… Я новичок в python поэтому не знал что есть для него еще библиотеки 😀 Пролистнул книжку Самоучитель python за 24 часа, там вроде сказано про другие gui библиотеки не было… Ладно, я подумаю о переходе на этот wx/qt. А создавать игру можно на этой GUI библиотеке?
Еще раз спасибо за ответ, завтра попробую! 🙂
#5 Окт. 5, 2008 17:37:47
Ferroman От: Зарегистрирован: 2006-11-16 Сообщения: 2759 Репутация: 1 Профиль Отправить e-mail
Как сделать Фон-картинку для Tk окна?
не знал что есть для него еще библиотеки
Аяяяй, нельзя же что-то делать не изучив предметную область.
Посмотри линки в прикреплённых темах, заодно в форуме GUI топики почитай. Там вроде в заголовках видно что есть ещё что-то кроме Tk 😉
А создавать игру можно на этой GUI библиотеке?
Tk? Яму тоже можно ломом выкопать.
Ладно, я подумаю о переходе на этот wx/qt.
PS: wxPython и PyQt — разные либы.
#6 Окт. 5, 2008 18:08:40
Albert.Novikov От: Зарегистрирован: 2008-10-04 Сообщения: 13 Репутация: 0 Профиль Отправить e-mail
Как сделать Фон-картинку для Tk окна?
Хмм… Пока не вижу ничего невозможного для tk, разве что иногда приходится спрашивать на форуме некоторые детали 😀
А про создание игры я задавал вопрос имея ввиду wx и qt, не Tk 😀
#7 Окт. 5, 2008 18:11:29
Ferroman От: Зарегистрирован: 2006-11-16 Сообщения: 2759 Репутация: 1 Профиль Отправить e-mail
Как сделать Фон-картинку для Tk окна?
Я и не говорю что невозможно. Я говорю “очень трудно и долго”.
На wx и на qk такие вещи делать явно проще и удобней.
#8 Окт. 5, 2008 21:33:50
igor.kaist От: Зарегистрирован: 2007-11-12 Сообщения: 1879 Репутация: 3 Профиль Отправить e-mail
Как сделать Фон-картинку для Tk окна?
по поводу игр, посмотри в сторону pygame… Всетаки специально для этого этот набор библиотек делали. Ferroman, ты прав, для начала желательно владеть языком программирования, а не знаниями “что нужно написать чтоб вылезло окно”, так в последствии будет намного проще
#9 Окт. 5, 2008 22:01:56
shiza От: Зарегистрирован: 2007-07-03 Сообщения: 1073 Репутация: 0 Профиль Отправить e-mail
Как сделать Фон-картинку для Tk окна?
Есть разные способы овладевать языком программирования.
Мне хотелось как раз вывести на экран красивое окно. А потом еще одно, но покрасивше. После второго окна я уже понял что к чему и вошел во вкус =)
Может и не самый простой путь, но еслиб я начинал не начаинал с окон, то точноб бросил все почти сразу.
Окна и разные спецэффекты дают более осязаемые ощущения, и как следствие — удоволетворение, и как следствие — желание продолжать этим заниматься.
Отредактировано (Окт. 5, 2008 22:05:56)
#10 Окт. 5, 2008 23:57:40
Ferroman От: Зарегистрирован: 2006-11-16 Сообщения: 2759 Репутация: 1 Профиль Отправить e-mail
Как сделать Фон-картинку для Tk окна?
*shiza
Согласен, писать окна — хороший способ учится. Но ето не повод не изучать предметную область :).
Как поставить картинку на фон в tkinter
Виджет Label представляет текстовую метку. Этот элемент позволяет выводить статический текст без возможности редактирования.
Для создания элемента Label применяется конструктор, который принимает два параметра:
Label(master, options)
Параметр master представляет ссылку на родительский контейнер, а параметр options представляет следующие именованные параметры
- anchor : устанавливает позиционирование текста
- background : фоновый цвет
- borderwidth : толщина границы метки
- cursor : курсор указателя мыши при наведении на метку
- font : шрифт текста
- foreground : цвет текста
- height : высота виджета
- image : ссылка на изображение, которое отображается на метке
- justify : устанавливает выравнивание текста. Значение LEFT выравнивает текст по левому краю, CENTER — по центру, RIGHT — по правому краю
- pading : отступы от границ вилжета до его текста
- relief : определяет тип границы, по умолчанию значение FLAT
- text : устанавливает текст метки
- textvariable : устанавливает привязку к элементу StringVar
- underline : указывает на номер символа в тексте метки, который подчеркивается. По умолчанию значение -1, то есть никакой символ не подчеркивается
- width : ширина виджета
- wraplength : при положительном значении строки текста будут переносится для вмещения в пространство виджета
Выведем в окне приложения простейший текст:
from tkinter import * from tkinter import ttk root = Tk() root.title("METANIT.COM") root.geometry("250x200") label = ttk.Label(text="Hello METANIT.COM") label.pack() root.mainloop()

Установка шрифта
Параметр font принимает определение шрифта в виде:
font = ("имя шрифта", размер_шрифта)
Первое значение передает имя шрифта в кавычках, а второе — числовой размер шрифта. Например, установим шрифт Arial высотой в 14 единиц:
from tkinter import * from tkinter import ttk root = Tk() root.title("METANIT.COM") root.geometry("250x200") label = ttk.Label(text="Hello METANIT.COM", font=("Arial", 14)) label.pack() root.mainloop()

Установка изображения
За установку изображения на метке отвечает параметр image . Самый простой способ определения изображения представляет создание объекта PhotoImage , в конструктор которого передается путь к изображению:
from tkinter import * from tkinter import ttk root = Tk() root.title("METANIT.COM") root.geometry("250x200") python_logo = PhotoImage(file="./python_logo.png") label = ttk.Label(image=python_logo) label.pack() root.mainloop()
В моем случае изображение представляет файл python_logo.png, которое находится в одной папке с файлом приложения и которое изображает логотип python:

Если необходимо также отображать и текст, то для этого можно установить параметр compound , который определяет положение текста по отношению к изображению с помощью одного из следующих значений:
- top : изображение поверх текста
- bottom : изображение под текстом
- left : изображение слева от текста
- right : изображение справа от текста
- none : при наличии изображения отображается только изображение
- text : отображается только текст
- image : отображается только изображение
Например, отобразим картинку поверх текста:
from tkinter import * from tkinter import ttk root = Tk() root.title("METANIT.COM") root.geometry("250x200") python_logo = PhotoImage(file="./python_logo.png") label = ttk.Label(image=python_logo, text="Python", compound="top") label.pack() root.mainloop()

Стилизация
По умолчанию метка не имеет границы. Для установки толщины границы используется параметр borderwidth , при этом нам также надо установить тип границы с помощью параметра releaf , который может принимать значения: «flat», «raised», «sunken», «ridge», «solid» и «groove»:
from tkinter import * from tkinter import ttk root = Tk() root.title("METANIT.COM") root.geometry("250x200") label = ttk.Label(text="Hello Tkinter", borderwidth=2, relief="ridge", padding=8) label.pack(expand=True) root.mainloop()
Установка цвета фона и текста:
from tkinter import * from tkinter import ttk root = Tk() root.title("METANIT.COM") root.geometry("250x200") label = ttk.Label(text="Hello Tkinter", background="#FFCDD2", foreground="#B71C1C", padding=8) label.pack(expand=True) root.mainloop()
Canvas — Фоновое изображение
Требуется именно на Tkinter. Весь интернет обшарил и ничего не нашёл. Заранее, спасибо!
Добавлено через 11 минут
Попробовал так, но не получилось:
image = tk.PhotoImage(file=path, width=root.winfo_screenwidth(), height=root.winfo_screenheight())
Добавлено через 1 час 26 минут
Нашёл ответ. Спасибо!
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Вставить изображение из буфера обмена в Canvas
Подскажите как вставить картинку из буфера обмена на холст Canvas?
Не могу добавить фоновое изображение в PyGame
Не могу добавить фоновое изображение в PyGame. Фото которое хочу сделать фоном игры в размере.

Как добавить фоновое изображение, а также, чтобы оно адаптировалось под размер окна?
Здравствуйте. Как добавить к качестве фона изображение? Пробовал через стили: .
Не загружается изображение в canvas, ошибок нет, Python 3
Не загружается изображение в canvas, ошибок нет, Python 3. Нажимаю кнопку и выбираю картинку.
Фоновое изображение
Привет всем. Я вывожу фоновое изображение размером 854х480 — по умолчанию именно такого размера.
Как поставить изображение на задний фон tkinter?
У меня есть окно, и я хочу сделать для него задний фон.
Я пытался сделать, пробовал разные способы, но не получилось.
import os from tkinter import * from tkinter import ttk def start(): app = App() app.mainloop() class App(Frame): def __init__(self, master = None): super().__init__(master) self.master.geometry('640x360') self.master.title("Bot") self.bg() self.pack() def bg(self): bgImg = PhotoImage(file = "bg.png") self.bg = ttk.Label(self) self.bg["text"] = "Yep" self.bg["image"] = bgImg self.bg.pack() start()
- Вопрос задан более двух лет назад
- 1821 просмотр
