Python 制作一个图像作为窗口的背景,并且仍然能够将按钮和其他控件放在上面
我需要一种方法,使一个图像作为一个窗口的背景,仍然能够把按钮和其他控制在它上面 这是我的代码:Python 制作一个图像作为窗口的背景,并且仍然能够将按钮和其他控件放在上面,python,python-2.7,tkinter,Python,Python 2.7,Tkinter,我需要一种方法,使一个图像作为一个窗口的背景,仍然能够把按钮和其他控制在它上面 这是我的代码: from __future__ import division from Tkinter import * from PIL import Image, ImageTk, ImageFilter import random import Tkinter as tk class MyGame(object): def __init__(self): self.root=
from __future__ import division
from Tkinter import *
from PIL import Image, ImageTk, ImageFilter
import random
import Tkinter as tk
class MyGame(object):
def __init__(self):
self.root=Tk()
self.root.wm_title("Working Tittle")
img = Image.open("azure.PNG").convert("L") # convert changes the color to grey etc
(w, h) = (img.size[1], img.size[1])
print (w, h)
tkpi = ImageTk.PhotoImage(img)
label = Label (self.root, image =tkpi)
label.grid(row=0, column=0, padx=5, pady=5)
img2 =img.copy()
pixels = img2.load()
for x in range(w):
for y in range(h):
pixels[x,y] = 255
tkpi = ImageTk.PhotoImage(img)
label = Label (self.root, image =tkpi)
label.grid(row=0, column=0, padx=5, pady=5)
#this is for the canvas
self.canvas = Canvas(self.root, width=200, height=200,bg="blue")
self.canvas.pack()
self.rectangle = self.canvas.create_rectangle(1, 210,250, 130, fill='green', outline='green')
self.rectangle = self.canvas.create_rectangle(100, 180, 160, 100, fill='grey', outline='grey')
self.oval = self.canvas.create_oval(2,2,40,40, fill ='yellow', outline='yellow')
points = [92, 101, 168, 101, 129, 77]
self.polygon = self.canvas.create_polygon( points,fill ='brown', outline='brown')
# used for the coordinates
self.canvas.bind("<B1-Motion>",self.button_click)
self.root.mainloop()
# this is used to find the coordinate
def button_click(self, e):
self.canvas.coords(self.polygon, e.x, e.y)
print "%d %d" %(e.x,e.y)
MyGame()
来自未来进口部的
从Tkinter进口*
从PIL导入图像、ImageTk、ImageFilter
随机输入
将Tkinter作为tk导入
类MyGame(对象):
定义初始化(自):
self.root=Tk()
self.root.wm_标题(“工作标题”)
img=Image.open(“azure.PNG”).convert(“L”)#convert将颜色更改为灰色等
(w,h)=(img.size[1],img.size[1])
打印(w,h)
tkpi=ImageTk.PhotoImage(img)
标签=标签(self.root,image=tkpi)
label.grid(行=0,列=0,padx=5,pady=5)
img2=img.copy()
像素=img2.load()
对于范围(w)内的x:
对于范围(h)内的y:
像素[x,y]=255
tkpi=ImageTk.PhotoImage(img)
标签=标签(self.root,image=tkpi)
label.grid(行=0,列=0,padx=5,pady=5)
#这是给画布的
self.canvas=canvas(self.root,宽度=200,高度=200,bg=“蓝色”)
self.canvas.pack()
self.rectangle=self.canvas.create_矩形(121250130,fill='green',outline='green'))
self.rectangle=self.canvas.create_矩形(100180160100,fill='grey',outline='grey'))
self.oval=self.canvas.create_oval(2,2,40,40,fill='yellow',outline='yellow')
分数=[92,101,168,101,129,77]
self.polygon=self.canvas.create_polygon(点,fill='brown',outline='brown')
#用于坐标
self.canvas.bind(“,self.button\u单击)
self.root.mainloop()
#这用于查找坐标
def按钮_单击(自身,e):
self.canvas.coords(self.polygon,e.x,e.y)
打印“%d%d%”(e.x,e.y)
我的游戏()
我通常这样做的方法是a)用您想要的图像创建一个标签作为背景,b)使用place
将图像放置在包含图像的框架中。这样,您就可以像往常一样继续在帧中打包或栅格化对象
例如:
self.image = tk.PhotoImage(...)
label = tk.Label(self,image=self.image)
label.place(x=0, y=0, relwidth=1.0, relheight=1.0, anchor="nw")
那么,你的代码有什么问题吗?对不起,每次我运行我的程序都没有发生任何事情,它没有打开窗口,它只是在没有任何结果的情况下执行。我尝试使用您的代码,但不断得到一个运行时错误:告诉它要尽早创建image@user1744316:这意味着在创建
Tk
的实例之前,您正在尝试创建一个映像。您需要在开始使用Tkinter的功能之前初始化它。