回答編集履歴

1 追記

can110

can110 score 26796

2019/06/01 17:00  投稿

`root.mainloop()`はその**前方に書いた処理を無限に行うものではなく**、イベントを無限に待ち受け処理するループです。
目的を達するためには以下のようにマウスが動いたイベントに対してコマンドを定義する必要があります。
参考:[Mouse Position Python Tkinter](https://stackoverflow.com/questions/22925599/mouse-position-python-tkinter)
```Python
import pyautogui
import tkinter as tk
def motion(event):
   #マウス座標を取得する
   px,py = pyautogui.position()
   label['text'] = '{},{}'.format(px,py)
def pushed():
   pass
root = tk.Tk()
root.title("Tkinter test")
root.geometry("360x480")
label = tk.Label(root)
label.place(x=10, y=10)
label.update()
root.bind('<Motion>', motion) # ***
button = tk.Button(root, text="ボタン", command=pushed)
button.place(x=250, y=5)
#rootを表示し無限ループ
root.mainloop()
```  
 
コメントを受けて  
--  
ウインドウの外側でもマウス座標を更新するためにはタイマーを使えばよいです。  
```Python  
import pyautogui  
import tkinter as tk  
 
def timer():  
   px,py = pyautogui.position()  
   label['text'] = '{},{}'.format(px,py)  
   root.after(10, timer)  
 
root = tk.Tk()  
root.title("Tkinter test")  
root.geometry("360x480")  
 
label = tk.Label(root)  
label.place(x=10, y=10)  
label.update()  
 
timer() # ***  
 
root.mainloop()  
```

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る