Найти - Пользователи
Полная версия: Tkinter Python3 Вставка изображение в Text Widget
Начало » GUI » Tkinter Python3 Вставка изображение в Text Widget
1
Guljaca
Нужно вставить изображение в текст.
Проблема: вместо изображения отображаются белые, либо серые квадраты
Если строку self.txt.window_create(END, window = Label(self.txt, image = image))
заменить на self.txt.window_create(END, window = Label(image, image = image))
Изображение отображается, хотя при этом постоянно высплывают ошибки.

* Вообще, я мало смыслю в том, что творю в этой строке
** Другие замечания по коду тоже пойдут

 from tkinter import *
from PIL import Image, ImageTk
class Frame_text(Frame):
	def __init__(self, parent):
		super().__init__(master = parent)
		self.grid_columnconfigure(0, weight=1)
		self.grid_rowconfigure(0, weight=1)
		self.create_textbox()
		
		
	def create_textbox(self):
		self.label 	 	 = Label(self, text=0)
		self.txt 		 = Text(self.label)
		self.yscrollb 	 = Scrollbar(self, command=self.txt.yview)
		self.xscrollb 	 = Scrollbar(self, command=self.txt.xview)
		self.txt['yscrollcommand'] = self.yscrollb.set
		self.txt['xscrollcommand'] = self.xscrollb.set
		self.label.grid_columnconfigure(0, weight=1)
		self.label.grid_rowconfigure(0, weight=1)
		self.txt.grid(row=0, column=0, sticky="nsew")
		self.label.grid(row=0, column=0, sticky="nsew")
		self.yscrollb.grid(row=0, column=1, rowspan=2,sticky="nsew")
		#self.xscrollb.grid(row=1, column=0, columnspan=2, sticky="nsew")
	def update(self):
		text = "test"
		image 	= Image.open("test.jpg")
		image 	= image.resize((100,100))
		image 	= ImageTk.PhotoImage(image)
		self.txt.delete('1.0', END)
		self.txt.insert(INSERT, text)
		self.txt.image_create(END, image=image)
		self.txt.window_create(END, window = Label(self.txt, image = image))
root = Tk()
text =  Frame_text(root)
text.pack(padx = 20, pady = 20)
Button(root, text = "Insert", command = text.update).pack()
root.mainloop()
Guljaca
Я так понимаю, проблема была в том, что изображение в процессе обработки не сохраняется.
Так вроде норм работает.

  
def update(self):
	text = "test"
	self.image 	= Image.open("test.jpg")
	self.image 	= self.image.resize((100,100))
	self.image 	= ImageTk.PhotoImage(self.image)
	self.txt.delete('1.0', END)
	self.txt.insert(INSERT, text)
	self.txt.image_create(END, image=self.image)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB