Вот мой код, который фактически создает эти ярлыки или холсты:

class FrameBanner(tk.Frame):
    """

    """
    def __init__(self, root, color_black, color_yellow, width, height):

        # Initialize from parent
        super(FrameBanner, self).__init__(root)

        # # Left STAR Banner
        # self.banner_STAR = tk.Canvas(master=self, width=width*0.8, height=height, bg=color_yellow)
        self.image_STAR = ImageTk.PhotoImage(Image.open("images_2/logo_here.png").resize((round(width*0.7), round(height*0.9)), Image.NEAREST))
        # self.banner_STAR.create_image(10, 10, anchor="w", image=self.image_STAR)
        # self.banner_STAR.image = self.image_STAR
        self.banner_STAR = tk.Label(master=self, image=self.image_STAR)
        self.banner_STAR.image = self.image_STAR

        # # Right IMS Banner
        # self.banner_IMS = tk.Canvas(master=self, width=width*0.2, height=height, bg=color_black)
        self.image_IMS = ImageTk.PhotoImage(Image.open("images_2/logo_here.png").resize((round(width*0.15), round(height*0.9)), Image.NEAREST))
        # self.banner_IMS.create_image(width*0.2, 10, anchor="w", image=self.image_IMS)
        # self.banner_IMS.image = self.image_IMS
        self.banner_IMS = tk.Label(master=self, image=self.image_IMS)
        self.banner_IMS.image = self.image_IMS

        # Grid Layout
        self.banner_STAR.grid(column=0, row=0, sticky='w')
        self.banner_IMS.grid(column=1, row=0, sticky='e')

Вот мой код, в котором он называется:

        ## Banner
        self.frm_banner_height = height*0.2
        self.frm_banner = tk.Frame(master=self.frm_pregen, width=self.frm_pregen_width, height=self.frm_banner_height)
        self.FrameBanner = FrameBanner(self.frm_banner, color_black, color_yellow, self.frm_pregen_width, self.frm_banner_height)

Позже я делаю:

self.frm_banner.grid(column=0, row=0)

Вот как это выглядит с углом, в котором я хочу, чтобы два изображения были пустыми:

образ

Какие-либо предложения?

0
Samuel Owen 10 Окт 2021 в 03:05

2 ответа

Лучший ответ

При инициализации виджета вы должны инициализировать его с помощью мастера корня. Я думаю ты можешь попробовать удалить

super(FrameBanner, self).__init__(root)

И измените инициализацию виджета, как показано ниже:

self.banner_STAR = tk.Label(master=root, image=self.image_STAR)
0
Embed Coder 10 Окт 2021 в 01:24

Это потому, что вы не вызывали никаких функций макета на self.FrameBanner:

...
self.FrameBanner.pack() # or whatever layout manager you want
self.frm_banner.grid(column=0, row=0)
...
1
acw1668 10 Окт 2021 в 01:59