如何使画布不可移动

2024-10-01 19:17:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个类似井字游戏的游戏,它的工作方式是玩家点击屏幕上的“x”或“o”。我用来确定“x”或“o”的位置的代码如下所示:

mxpos = root.winfo_pointerx()
mypos = root.winfo_pointery()
zone = None
if mxpos > -1 and mxpos < 200:
    if mypos > -1 and mypos < 200:
        zone = 1
    if mypos > 199 and mypos < 400:
        zone = 2
    if mypos > 399 and mypos < 600:
        zone = 3
if mxpos > 199 and mxpos < 400:
    if mypos > -1 and mypos < 200:
        zone = 4
    if mypos > 199 and mypos < 400:
        zone = 5
    if mypos > 399 and mypos < 600:
        zone = 6
if mxpos > 399 and mxpos < 600:
    if mypos > -1 and mypos < 200:
        zone = 7
    if mypos > 199 and mypos < 400:
        zone = 8
    if mypos > 399 and mypos < 600:
        zone = 9

但是这只在画布没有移动的情况下有效,因为鼠标点击的坐标不同。我已经查了好几次了,似乎没有办法做到这一点,但只是问是否有人有任何方法可以绕过这个问题


Tags: and代码游戏zoneif屏幕方式玩家
1条回答
网友
1楼 · 发布于 2024-10-01 19:17:08

如果将函数绑定到画布,那么应该使用来自event的值,然后可以移动窗口或画布,并且应该始终获得相同的值

import tkinter as tk

def position(event):
    print('desktop:', root.winfo_pointerx(), root.winfo_pointery())
    print('canvas:', event.x, event.y)

root = tk.Tk()

canvas = tk.Canvas(root, width=500, height=500)
canvas.pack()
canvas.bind('<Button-1>', position)

root.mainloop()

相关问题 更多 >

    热门问题