我看过有关此主题的其他帖子,但它们并不是很有结论,它们仅提供了使用其他模块来执行此操作的建议。
我正在尝试将我的maincharacter.png(http://pluspng.com/img-png/png-character--600.png)图像插入到我的top_left框架中。
代码(运行它):
from tkinter import *
from PIL import ImageTk, Image
class GameScreen:
def __init__(self, master):
# create all of the main containers
top_left = Frame(master, bg='black', width=200, height=200)
top_middle = Frame(master, bg='green', width=200, height=200)
top_right = Frame(master, bg="green", width=200, height=200)
middle_left = Frame(master, bg='green', width=200, height=200)
middle = Frame(master, bg='green', width=200, height=200)
middle_right = Frame(master, bg='green', width=200, height=200)
bottom_left = Frame(master, bg='green',width=200, height=200 )
bottom_middle = Frame(master, bg='green', width=200, height=200 )
bottom_right = Frame(master, bg='green', width=200, height=200)
# layout all of the main containers
top_left.grid(row=0)
top_middle.grid(row=0, column = 1)
top_right.grid(row=0, column=2)
middle_left.grid(row=1)
middle.grid(row=1, column=1)
middle_right.grid(row=1, column=2)
bottom_left.grid(row=2)
bottom_middle.grid(row=2, column=1)
bottom_right.grid(row=2, column=2)
c1 = ImageTk.PhotoImage(Image.open('maincharacter.png'))
c1_label = Label(top_left, image=c1)
c1_label.pack()
root = Tk()
root.title("RPG Game")
root.geometry("600x600")
display = GameScreen(root)
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
当我尝试这样做时,主要有两个问题:
编辑-为什么现在有白线:
您可以按照以下步骤操作:
from tkinter import *
from PIL import ImageTk, Image
class GameScreen:
def __init__(self, master):
# create all of the main containers
top_left = Frame(master, bg='black', width=200, height=200)
top_middle = Frame(master, bg='green', width=200, height=200)
top_right = Frame(master, bg="green", width=200, height=200)
middle_left = Frame(master, bg='green', width=200, height=200)
middle = Frame(master, bg='green', width=200, height=200)
middle_right = Frame(master, bg='green', width=200, height=200)
bottom_left = Frame(master, bg='green', width=200, height=200)
bottom_middle = Frame(master, bg='green', width=200, height=200)
bottom_right = Frame(master, bg='green', width=200, height=200)
# layout all of the main containers
top_left.grid(row=0, column=0, padx=0, pady=0)
top_middle.grid(row=0, column=1)
top_right.grid(row=0, column=2)
middle_left.grid(row=1, column=0)
middle.grid(row=1, column=1)
middle_right.grid(row=1, column=2)
bottom_left.grid(row=2, column=0)
bottom_middle.grid(row=2, column=1)
bottom_right.grid(row=2, column=2)
image = Image.open("maincharacter.png")
photo = ImageTk.PhotoImage(image.resize((196, 196), Image.ANTIALIAS))
label = Label(top_left, image=photo, bg='green')
label.image = photo
label.pack()
root = Tk()
root.title("RPG Game")
root.geometry("600x600")
display = GameScreen(root)
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
在我看来,这是一个更好的选择:
from tkinter import *
from PIL import ImageTk, Image
class GameScreen:
def __init__(self, master):
# create all of the main containers
top_left = Frame(master, bg='black', width=200, height=200)
top_middle = Frame(master, bg='green', width=200, height=200)
top_right = Frame(master, bg="green", width=200, height=200)
middle_left = Frame(master, bg='green', width=200, height=200)
middle = Frame(master, bg='green', width=200, height=200)
middle_right = Frame(master, bg='green', width=200, height=200)
bottom_left = Frame(master, bg='green', width=200, height=200)
bottom_middle = Frame(master, bg='green', width=200, height=200)
bottom_right = Frame(master, bg='green', width=200, height=200)
# layout all of the main containers
top_left.grid(row=0, column=0, padx=0, pady=0)
top_middle.grid(row=0, column=1)
top_right.grid(row=0, column=2)
middle_left.grid(row=1, column=0)
middle.grid(row=1, column=1)
middle_right.grid(row=1, column=2)
bottom_left.grid(row=2, column=0)
bottom_middle.grid(row=2, column=1)
bottom_right.grid(row=2, column=2)
# create a canvas to show image on
canvas_for_image = Canvas(top_left, bg='green', height=200, width=200, borderwidth=0, highlightthickness=0)
canvas_for_image.grid(row=0, column=0, sticky='nesw', padx=0, pady=0)
# create image from image location resize it to 200X200 and put in on canvas
image = Image.open('maincharacter.png')
canvas_for_image.image = ImageTk.PhotoImage(image.resize((200, 200), Image.ANTIALIAS))
canvas_for_image.create_image(0, 0, image=canvas_for_image.image, anchor='nw')
root = Tk()
root.title("RPG Game")
root.geometry("600x600")
display = GameScreen(root)
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15924 次 |
| 最近记录: |