簡體   English   中英

如何在tkinter中具有背景圖像和按鈕?

[英]How to have an background image and buttons on it in tkinter?

我正在使用tkinter編寫一個簡單的Python 3程序。 它應該顯示背景圖片和一個按鈕。

這是代碼:

import tkinter
from PIL import Image
from PIL import ImageTk

window = tkinter.Tk()
file = Image.open('/Users/dariushmazlumi/Desktop/p.jpg')
img = ImageTk.PhotoImage(file)
background = tkinter.Label(window, image=img)
background.image = img
background.pack()
window.minsize(height=window.winfo_height(), width=window.winfo_width())
number = 0
def buttonclicked():
    global number
    number = number+1
    button.configure(text=number)
button = tkinter.Button(window, text=0, command=buttonclicked)
button.grid(column=1, row=1)
window.mainloop()

在此之前,我嘗試使用button.pack() ,但是它在圖像下方顯示按鈕,而不是在圖像下方顯示(可能圖像不是背景)。

接下來,我嘗試使用button.grid() 它在終端上運行,沒有錯誤,但是沒有可見的輸出! 它只是運行。 我不知道為什么

我希望程序在其上顯示圖像和按鈕(例如,桌面)。

我找到了一種簡單的方法來做您想要的事情,這比我在評論中建議的要簡單得多。 基本步驟是:創建一個tkinter.Canvas ,使用Canvas.create_image()在其上顯示圖像,接下來創建一個Canvas.create_window() ,最后將tkinter.Button放入其中 請注意,每個“ Canvas ”“窗口”只能容納一個小部件,因此,如果要在圖像上放置多個按鈕,則必須重復最后兩個步驟。

通過查看以下代碼,可能更容易理解:

import tkinter as tk
from PIL import ImageTk, Image

class CanvasButton:
    def __init__(self, canvas):
        self.canvas = canvas
        self.number = tk.IntVar()
        self.button = tk.Button(canvas, textvariable=self.number,
                                command=self.buttonclicked)
        self.id = canvas.create_window(50, 100, width=25, height=25,
                                       window=self.button)
    def buttonclicked(self):
        self.number.set(self.number.get()+1)  # auto updates Button

root = tk.Tk()
root.resizable(width=False, height=False)
root.wm_attributes("-topmost", 1)

imgpath = 'archipelago_big.gif'
img = Image.open(imgpath)
photo = ImageTk.PhotoImage(img)

canvas = tk.Canvas(root, bd=0, highlightthickness=0)
canvas.pack()
canvas.create_image(0, 0, image=photo)

CanvasButton(canvas)  # create a clickable button on the canvas

root.mainloop()

這是幾次單擊按鈕后的樣子:

腳本顯示的圖像的屏幕截圖

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM