<p>将变量赋给<code>text</code>参数没有帮助,因为即使变量的值更改,它也不会反映在标签中。以下是我的方法(这只是许多可能方法中的一种)</p>
<pre class="lang-py prettyprint-override"><code>import pyautogui, PIL
import tkinter as tk
from threading import Thread
def cursorpixel():
x,y = pyautogui.position()
pixel = (x,y,x+1,y+1)
grabColor(pixel)
def grabColor(square, max_colors=256):
global color_label,root
img=PIL.ImageGrab.grab(square)
color = img.getcolors(max_colors)
color_label.config(text=color)
def refresh():
while True:
cursorpixel()
def main():
global color_label,root
root=tk.Tk()
root.minsize(150, 50)
color_label = tk.Label(root,
fg = "black",
font = "Arial")
color_label.pack()
Thread(target=refresh).start()
root.mainloop()
if __name__ == "__main__":
main()
</code></pre>
<p><strong>注释</strong></p>
<ul>
<li>我使用了多线程,并创建了一个函数<code>refresh()</code>,它在无限循环中触发<code>cursorpixel()</code></李>
<li>我已经从以<code>pixel</code>作为参数的<code>cursorpixel()</code>调用了<code>grabColor()</code>函数</李>
<li>我已经使用了<code>color_label.config()</code>方法来更改标签中的文本,您也可以使用<code>color_label['text']</code>或者可能将<code>textvariable</code>{<cd10>}分配给标签,然后在标签上使用<code>var.set()</code></李>
<li>我不确定将<code>__name__='__main__'</code>放入<code>while</code>循环是否是一个好的选择,因为如果不终止任务,您将无法关闭窗口,每次尝试这样做时都会弹出一个新窗口</李>
</ul>