| Начало » Администрирование ОС » Unix-системы » картинка в контейнере Переход к форуму:
	| 
		
			| картинка в контейнере [сообщение #5509] | Sat, 28 September 2024 19:18  |  
			| 
				
				
					|  Liberator Сообщений: 18
 Зарегистрирован: September 2024
 | Junior Member |  |  |  
	| Python3.9 import tkinter as tk
 root = tk.Tk()
 Создаём фрейм
 frame=tk.Frame(root, borderwidthy=2, relief="sunken")
 root.title(«Frame Example»)
 Добавляем виджет во фрейм
 image = tk.Image(frame, file=‘Roza_1.png’)
 image.pack(pady=5)
 root.mainloop()
 
 Получаю self.tk.call((‘image’, ‘create’, imgtype, name,) + options)
 
 Т.е. строка image= записана неправильно.
 Не могу найти шаблон с расшифровкой аргументов.
 
 Картинку получаю:
 from tkinter import PhotoImage, Label, Tk
 root = Tk()
 img = PhotoImage(file="Roza.png")
 label = Label(root, image=img)
 label.pack()
 root.mainloop()
 Но не в контейнере.
 К ней добавить виджеты не получается.
 Куда свернуть ? Налево (через контейнер) или направо (без клонтейнера) ?
 |  
	|  |  |  
	| 
		
			| Re: картинка в контейнере [сообщение #5510 является ответом на сообщение #5509] | Sat, 28 September 2024 21:36   |  
			| 
				
				
					|  BlackEric Сообщений: 393
 Зарегистрирован: June 2022
 | Senior Member |  |  |  
	| Из очень старого проекта, но уже под 3 питон, выдрал. не знаю заведется ли.
from tkinter import *
from PIL import ImageTk, Image
from tkinter import filedialog
import os
root = Tk()
root.geometry("550x300+300+150")
root.resizable(width=True, height=True)
def openfn():
    filename = filedialog.askopenfilename(title='open')
    return filename
def open_img():
    filename = openfn()
    img = Image.open(filename)
    img = img.resize((250, 250), Image.ANTIALIAS)
    img = ImageTk.PhotoImage(img)
    panel = Label(root, image=img)
    panel.image = img
    panel.pack()
btn = Button(root, text='open image', command=open_img).pack()
root.mainloop()
 Руководство по Tkinter - кратенький учебник.
 |  
	|  |  |  
	| 
		
			| Re: картинка в контейнере [сообщение #5513 является ответом на сообщение #5510] | Sun, 29 September 2024 18:37   |  
			| 
				
				
					|  Liberator Сообщений: 18
 Зарегистрирован: September 2024
 | Junior Member |  |  |  
	| У меня не заведется. Почему-то Pillow у меня устанавливаться никак не хочет. Такое работает:
 from tkinter import PhotoImage, Label, Tk
 import tkinter as tk
 root = Tk()
 frame_top = Frame(root)
 frame_top.pack()
 label_1 = Label(frame_top, width=7, height=4, bg='yellow', text="1234567")
 label_1.pack(side=LEFT)
 Проблем с выводом картинки без контейнера нет.
 img = PhotoImage(file="Roza.png")
 А вот как записать чтобы картинка оказалась в контейнере не знаю.Я пробовал что-то типа
 image = tk.Image(frame_top, width=7, height=4, bg='yellow', text="нкценгек")
 image.pack()
 Но надо знать что записать в скобках, а именно что и сколько. Да и верна ли конструкция tk.Image
 |  
	|  |  |  
	| 
		
			| Re: картинка в контейнере [сообщение #5514 является ответом на сообщение #5509] | Sun, 29 September 2024 19:34   |  
			| 
				
				
					|  Liberator Сообщений: 18
 Зарегистрирован: September 2024
 | Junior Member |  |  |  
	| Может для картинки и не нужен контейнер. Тогда надо понять как располагать несколько картинок на одном холсте. 
 from tkinter import *
 from tkinter import PhotoImage, Label, Tk
 import tkinter as tk
 root = Tk()
 frame_top = Frame(root)
 frame_top.pack()
 label_1 = Label(frame_top, width=15, height=5, bg='green', text="к а р т и н к и")
 label_1.pack(side=LEFT)
 img = PhotoImage(file="Roza.png")
 label = Label(root, image=img)
 label2=Label(root, image=img)
 label3 = Label(root, image=img)
 label.pack()
 label2.pack()
 label3.pack()
 root.mainloop()
 Программа располагает три картинки в столбец. Хотелось бы на это влиять, т.е. самому определять в какой части холста какая картинка.
 |  
	|  |  |  
	|  |  
	|  |  
	|  | 
 
 
 Текущее время: Fri Oct 31 04:25:50 GMT+3 2025 
 Общее время, затраченное на создание страницы: 0.01173 секунд |