python 如何在框架上制作背景图片

How to make a background image on frame in python

我有一个问题,我想将图像作为这个小转换器的背景,有人可以帮助我吗?我在网上和 Whosebug 上查找,但我发现 none 的东西可以与 class.

一起使用
__author__ = 'apcs'
from tkinter import *


class FarenheitToCelsius(Frame):
    def __init__(self):
        Frame.__init__(self)
        self.master.title("Farenheit To Celsius Conversion")
        self.grid()



        self.farenheitLabel = Label(self, text="Farenheit")
        self.farenheitLabel.grid(row=0, column=0)
        self.farVar = DoubleVar()
        self.farEntry = Entry(self, textvariable=self.farVar)
        self.farEntry.grid(row=0, column=1)

        self.celsiusLabel = Label(self, text="Celsius")
        self.celsiusLabel.grid(row=1, column=0)
        self.celVar = DoubleVar()
        self.celEntry = Entry(self, textvariable=self.celVar)
        self.celEntry.grid(row=1, column=1)

        self.button = Button(self,
                             text="Convert to Celsius",
                             command=self.convertToFarenheit)
        self.button2 = Button(self,
                              text="Convert to Farenheit",
                              command=self.convertToCelsius)
        self.button.grid(row=2, column=1, columnspan=1)
        self.button2.grid(row=2, column=0, columnspan=1)


    def convertToFarenheit(self):
        fare = self.farVar.get()
        cels = (fare - 32) * 5 / 9
        self.celVar.set(cels)

    def convertToCelsius(self):
        cel = self.celVar.get()
        far = cel * 9 / 5 + 32
        self.farVar.set(far)


def main():
    FarenheitToCelsius().mainloop()


main()

我至少可以想到三种方法:

  1. 在标签中创建图像,并使用place将其放入框架中。然后创建所有其他小部件并像往常一样使用 packgrid。确保先创建框架,然后是带有图像的标签,然后是框架的 children,以便堆叠顺序正确。

  2. 使用canvas代替frame,使用create_image方式添加图片。然后就可以pack/place/grid children 正常了

  3. 不使用框架,而是使用标签作为容器,然后将 pack/place/grid 小部件放入标签中(是的,您可以将 children 添加到标签小部件中)。