我正在玩井字游戏,其工作方式是玩家将在屏幕上单击以放置“ 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
但这仅在画布未移动的情况下有效,因为鼠标单击的坐标与那时不同。我已经查了几次了,似乎没有办法做到这一点,只是问是否有人有办法解决这个问题。
答案 0 :(得分:0)
如果将函数绑定到画布,则应该使用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()