Я пытаюсь создать приложение для работы, но я новичок в Tkinter. Я хочу, чтобы логотип компании отображался в верхнем левом углу. Однако все, что я могу увидеть, это пустое серое поле. Стоит отметить, что это изображение с прозрачным фоном, однако мне удавалось добиться его отображения раньше, когда мой код не был организован в классы. Размер изображения также не должен быть проблемой. Я специально изменил его размер, чтобы он соответствовал используемому фрейму.
Пустое серое поле
Я пробовал это несколькими разными способами: с помощью виджета Canvas и с помощью метки. виджет. Однако ни то, ни другое не работает. Когда я использую виджет Canvas, все, что появляется, — это пустой серый прямоугольник. Я ничего не получаю от виджета ярлыка.
Мой код приведен ниже. Тот же самый код работал, когда программа не была организована по классам. Но я решил, что непонятный поток кода — не лучший вариант при создании приложения.
Я вставил сюда только основной класс и класс логотипа. Есть и другие, но они не имеют отношения к тому, чем я сейчас занимаюсь.
from tkinter import *
from tkinter import ttk
from PIL import ImageTk,Image
class MainApp(Tk):
def __init__(self, title, size):
super().__init__()
#Main Setup
self.title(title)
self.geometry(f"{size[0]}x{size[1]}")
self.minsize(size[0],size[1])
#Main Frames
self.logo = Logo(self)
self.left = Left(self)
self.right = Right(self)
self.content = Content(self)
self.columnconfigure(1, weight=6)
self.columnconfigure(0, weight=0)
self.columnconfigure(2, weight=0)
self.rowconfigure(1, weight=6)
self.rowconfigure(0, weight=0)
self.mainloop()
class Logo(ttk.Frame):
def __init__(self, parent):
super().__init__(parent)
self = ttk.Frame(parent, borderwidth=5, relief="ridge", width = 1000, height = 50)
unipart = Canvas(self, width = 171, height = 50)
self.grid(row=0,column=0, columnspan=3, rowspan=1, sticky=("N", "S", 'E', 'W'))
image = Image.open("Py GUI\\unipart-logo.png")
unipart = ImageTk.PhotoImage(image)
self.label=Label()
self.label['image'] = unipart
self.label.grid(column=0, row=0, columnspan=1, rowspan=1, sticky=("S"))
# unipart = ttk.Label(self)
# img = ImageTk.PhotoImage(file='Py GUI\\unipart-logo.png')
# unipart['image'] = img
# unipart.grid(column=0, row=0, columnspan=1, rowspan=1)
Подробнее здесь: https://stackoverflow.com/questions/786 ... box-python