我正在尝试在界面中放置背景图片。我的界面包括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)
我需要一个可以使用网格管理器缩小或扩展的背景图像。现在我有图像,但是它的大小没有改变。