Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » Tkinter Python3 Вставка изображение в Text Widget [RSS Feed]

#1 Авг. 24, 2017 18:20:29

Guljaca
От:
Зарегистрирован: 2011-07-11
Сообщения: 93
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter Python3 Вставка изображение в Text Widget

Нужно вставить изображение в текст.
Проблема: вместо изображения отображаются белые, либо серые квадраты
Если строку 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()



Офлайн

#2 Авг. 24, 2017 19:05:12

Guljaca
От:
Зарегистрирован: 2011-07-11
Сообщения: 93
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter Python3 Вставка изображение в Text Widget

Я так понимаю, проблема была в том, что изображение в процессе обработки не сохраняется.
Так вроде норм работает.

  
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)



Офлайн

  • Начало
  • » GUI
  • » Tkinter Python3 Вставка изображение в Text Widget[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version