python - 如何在 tkinter 窗口中绘制图像

标签 python image user-interface tkinter draw

如何在 tkinter 窗口中绘制图像(我使用的是 python 3.3)?我正在寻找一个语句,它会在 tkinter 窗口的给定位置绘制图像。

是的...

任何答案将不胜感激。这是程序的源代码(如果可以这样称呼的话),我想在其中使用代码,以备不时之需。

from tkinter import *

class craftClass():
    def __init__(self, x = 80, y = 80, xmotion = 0, ymotion = 0, health = 20):
        self.xPos, self.yPos = x, y
        self.dx, self.dy = xmotion, ymotion
    def moveCraft(self):
        self.xPos += self.dx
        self.yPos += self.dy

class missileClass():
    def __init__(self, x = 0 , y = 0):
        self.xPos, self.yPos = x, y

class alienClass():
    def __init__(self, x, y):
        self.xPos, self.yPos = x, y

    def moveForCraft(self, craftX, craftY):
        if self.xPos < craftX:
            self.xPos += 2
        elif self.xPos > craftX:
            self.xPos -= 2
        else:
            pass

    if self.yPos < craftY:
        self.yPos += 2
    elif self.yPos > craftY:
        self.yPos -= 2
    else:
        pass

craft = craftClass()
missileArray = []
alienArray = []

def keypress(event):
    if event.keysym == 'Escape':
        root.destroy()
x = event.char
if x == "w":
    craft.dy = 1
elif x == "s":
    craft.dy = -1
elif x == "a":
    craft.dx = -1
elif x == "d":
    craft.dx = 1
else:
    print(x)

root = Tk()
print(craft.dx)
while True:
try:
    root.bind_all('<Key>', keypress)
    craft.moveCraft()
    root.update()
except TclError:
    print("exited. tcl error thrown. llop broken")
    break

我很清楚间距有点乱,但那是复制时发生的事情

最佳答案

您需要使用 Canvas 小部件将图像放在指定的 (x,y) 位置。

在 Python 3 中,你可以这样做:

import tkinter

tk = tkinter.Tk()
can = tkinter.Canvas(tk)
can.pack()
img = tkinter.PhotoImg("<path/to/image_file>.gif")
can.create_image((x_coordinate, y_coordinate), img)

请注意,由于 Python 3 没有正式的 PIL* 版本,您只能读取 GIF 类型的图像,PGMPPM - 如果您需要其他文件类型,请检查 this answer .

Canvas 小部件非常强大,它允许您定位图像,通过 "canvas.update" 调用显示图像上的内容,并使用 "删除项目显示器canvas.delete(item_id)” 调用。检查其 documentation .

虽然 Tkinter 应该足以满足您的简单游戏需求,但请考虑查看 Pygame ,以获得更好的多媒体支持,或者可能是Pyglet ,甚至更高级别的多媒体框架称为 Kivy .

*(更新):截至 2015 年,有 Pillow - 一个替代旧 PIL 项目的分支,恢复了项目的正常开发,包括对 Python 的支持3.x

关于python - 如何在 tkinter 窗口中绘制图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12250117/

相关文章:

c# - 如何使WPF网格可扩展?

java - 在线运行非GUI Java程序

python - 将 Pandas 中的列索引重置为 0,1,2,3 ...?

python - 导入错误: cannot import name 'BlobService' when using Azure Backend

css - 使用图像作为输入文件显示输入类型文件中的图像文件名

java - 如何设置JTree "ctrl"选择模式始终启用

python - 如何将所有子文件夹复制到 Python 3 中的现有文件夹中?

python - 如何在Windows 10的cmd外壳上的笔记本电脑上本地运行mapreduce程序

html - 如何垂直对齐 float 图像

上传和显示后php从服务器删除图像