首页 > 解决方案 > 线程和 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()  

标签: pythontkinter

解决方案


您可能不需要 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()

推荐阅读