python - 线程和 Tkinter /Python3
问题描述
我需要帮助在 Tkinter 中连接一个额外的流。我需要不断更新Label中的光标坐标,但就是想不通(+如果可能的话,你可以告诉我如何进行这样的构造:“text”,一个变量,这里:Label(text = "坐标:",字体 = "Arial 12")。
import win32api
from threading import Thread
from tkinter import *
root = Tk()
#Подключение модулей}
#Переменные{
xcoord = "null"
ycoord = "null"
h_x = 0
h_y = 0
#Переменные}
root.title("Utility")
root.geometry("400x500+100+100")
root.columnconfigure(0, weight=1)
root.resizable(False, False)
#root.iconbitmap('') Иконка
root["bg"] = "grey30"
def coordinates():
while True:
h_x, h_y = win32api.GetCursorPos()
print(h_x, h_y)
#Лейбл показа координат{
select_mode = Label(text="Координаты:", font="Arial 12")
select_mode['bg'] = "grey30"
select_mode['fg'] = "white"
select_mode.place(x="10", y="470")
select_mode = Label(text='x = ', font="Arial 12")
select_mode['bg'] = "grey30"
select_mode['fg'] = "white"
select_mode.place(x="120", y="470")
select_mode = Label(text=h_x, font="Arial 12")
select_mode['bg'] = "grey30"
select_mode['fg'] = "white"
select_mode.place(x="140", y="470")
select_mode = Label(text='y = ', font="Arial 12")
select_mode['bg'] = "grey30"
select_mode['fg'] = "white"
select_mode.place(x="200", y="470")
select_mode = Label(text=h_y, font="Arial 12")
select_mode['bg'] = "grey30"
select_mode['fg'] = "white"
select_mode.place(x="220", y="470")
coord_thread = Thread(target = coordinates)
coord_thread.run()
coord_thread.join()
root.mainloop()
解决方案
您可能不需要 aThread
来执行此操作。
您可以使用root.after()
重新执行coordinates
:
# other stuff as before, except the creation of these labels:
select_mode_x = Label(text=h_x, font="Arial 12")
select_mode_x['bg'] = "grey30"
select_mode_x['fg'] = "white"
select_mode_x.place(x="140", y="470")
select_mode_y = Label(text=h_y, font="Arial 12")
select_mode_y['bg'] = "grey30"
select_mode_y['fg'] = "white"
select_mode_y.place(x="220", y="470")
# Moved coordinates function down here
def coordinates():
h_x, h_y = win32api.GetCursorPos()
print(h_x, h_y)
select_mode_x.config(text=h_x)
select_mode_y.config(text=h_y)
root.after(100, coordinates)
coordinates()
root.mainloop()
推荐阅读
- django-rest-framework - 从可重用应用程序覆盖 DRF 序列化程序
- angular - 'ngbd-accordion-basic' 不是已知元素:
- mongodb - 如何从 npm 脚本中将 mongodb 放入 docker 容器中
- linux - 杀死从同一个 bash 脚本启动的后台进程
- python-3.x - Pyserial: termios.error: (22, 'Invalid argument') 从虚拟串口读取时
- firebase - 原因:java.lang.ClassNotFoundException:找不到类“com.google.firebase.FirebaseApp$IdTokenListenersCountChangedListener”
- html - 如何使用 justify-content center 在 flexbox div 中将输入拉伸到 100%
- c# - ThreadPool.QueueUserWorkItem 完成后调用方法
- javascript - 使两位数相等
- python - 如何从单个文件中读取特定行并在新文件的同一行中写入?