我有一个应用程序,可以获取光标所在像素的css3颜色,我想使用tkinter在一个小窗口中显示文本。以下是我代码中的tkinter部分:
import pyautogui, PIL
import tkinter as tk
def cursorpixel():
x,y = pyautogui.position()
pixel = (x,y,x+1,y+1)
return pixel
def grabColor(square, max_colors=256):
img=PIL.ImageGrab.grab(square)
color = img.getcolors(max_colors)
return color
def main():
root=tk.Tk()
root.minsize(150, 50)
color = tk.Label(root,
text= grabColor(cursorpixel()),
fg = "black",
font = "Arial").pack()
root.mainloop()
while __name__ == "__main__":
main()
这是我想要的,不需要在光标在屏幕上移动时更新标签文本。它在启动应用程序时工作一次,标签文本保持不变。如何使标签文本在光标移动时更新?我正在使用python 3.7
多谢各位
将变量赋给
text
参数没有帮助,因为即使变量的值更改,它也不会反映在标签中。以下是我的方法(这只是许多可能方法中的一种)注释
refresh()
,它在无限循环中触发cursorpixel()
李>pixel
作为参数的cursorpixel()
调用了grabColor()
函数李>color_label.config()
方法来更改标签中的文本,您也可以使用color_label['text']
或者可能将textvariable
{var.set()
李>__name__='__main__'
放入while
循环是否是一个好的选择,因为如果不终止任务,您将无法关闭窗口,每次尝试这样做时都会弹出一个新窗口李>回答
我将
.after
命令添加到grabColor()
函数中,并组合了cursorpixel
和grabColor()
函数。我用.config
来更新颜色。代码如下:来源/其他资源
How do I create an automatically updating GUI using Tkinter?
您可以使用
after()
定期获取颜色:注意
winfo_pointerxy()
被用来代替pyautogui.position()
以减少对外部模块的依赖相关问题 更多 >
编程相关推荐