Расширение / сжатие фонового изображения на tkinter с помощью менеджера сетки - PullRequest
0 голосов
/ 10 июня 2019

Я пытаюсь добавить фоновое изображение в мой интерфейс.Мой интерфейс состоит из 3 различных разделов, я написал его с помощью объектно-ориентированного подхода.

С помощью приведенного ниже кода я могу создать фоновое изображение, но оно не расширяется и не уменьшается при уменьшении или увеличении размера интерфейса.Я нашел способ с помощью метода .pack с параметром (expand = True), но я использую диспетчер сетки, чтобы создать свой интерфейс, и я не могу изменить все свои коды, которые уже подчинены диспетчеру сетки.

import tkinter as tk
from tkinter import ttk
from PIL import ImageTk, Image

class Application(tk.Tk):

    def __init__(self):
        tk.Tk.__init__(self)
        tk.Tk.wm_title(self, "SATRAP")
        tk.Tk.geometry(self, "1000x200")
        tk.Tk.minsize(self, width=200, height=200)
        tk.Tk.iconbitmap(self, default="interface.ico")

class StartPage(tk.Frame):

    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)

        tk.Frame.update(self)      
        tk.Frame.grid_columnconfigure(self, 0, weight=1)
        tk.Frame.grid_columnconfigure(self, 1, weight=1)
        tk.Frame.grid_columnconfigure(self, 2, weight=1)
        tk.Frame.grid_columnconfigure(self, 3, weight=1)
        tk.Frame.grid_columnconfigure(self, 4, weight=1)
        tk.Frame.grid_columnconfigure(self, 5, weight=1)
        self.createCanvasImage()

   def createCanvasImage(self):
        canvas = tk.Canvas(self, width=1000, height=200)
        canvas.grid(row=0, column=0, rowspan=10, columnspan=7)
        img = Image.open(r"picturepath")
        canvas.image = ImageTk.PhotoImage(img)
        canvas.create_image(0, 0, image=canvas.image, anchor=tk.NW)

class HelpMenu(tk.Frame):

    def __init__(self, parent, controller):                                     
        tk.Frame.__init__(self, parent)                      
        self.createCanvasImage()

   def createCanvasImage(self):
        canvas = tk.Canvas(self, width=1000, height=200)
        canvas.grid(row=0, column=0, rowspan=10, columnspan=7)
        img = Image.open(r"picturepath")
        canvas.image = ImageTk.PhotoImage(img)
        canvas.create_image(0, 0, image=canvas.image, anchor=tk.NW)

Мне нужно иметь фоновое изображение, которое можно сжимать или расширять с помощью менеджера сетки.Прямо сейчас у меня есть изображение, но его размер не меняется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...