使用网格管理器在tkinter上扩展/缩小背景图像

时间:2019-06-10 09:09:35

标签: python-3.x image tkinter

我正在尝试在界面中放置背景图片。我的界面包括3个不同的部分,我使用面向对象的方法编写的。

使用下面的代码,我可以生成背景图片,但是当我最小化或最大化界面时,它不会扩大或缩小。我找到了使用带有参数(expand = True)的.pack方法的方法,但是我使用网格管理器来创建我的界面,并且无法更改网格管理器已经从属的所有代码。

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)

我需要一个可以使用网格管理器缩小或扩展的背景图像。现在我有图像,但是它的大小没有改变。

0 个答案:

没有答案