我目前有一个python脚本,它启动一个tkinter GUI实例,一个点击的按钮就会截取屏幕截图。
当我在python.exe下运行此脚本时,tkinter分辨率很好,屏幕截图捕获整个屏幕。但是,当使用pythonw.exe时,tkinter窗口分辨率会发生变化(例如按钮会变大),屏幕截图只捕获屏幕的一部分 - 通常是左上角。
我需要使用pythonw.exe以防止出现控制台窗口。
有谁知道为什么tkinter窗口分辨率和屏幕截图捕获正在生效?据推测,对分辨率的影响也是为什么截图捕捉也会减少的原因。
我对Python很新,所以对此有任何帮助将不胜感激,下面是tkinter窗口代码片段和截图功能。重申此功能在python.exe下运行完全正常。
使用ImageGrab的屏幕截图功能:
callback1():
ImageGrab.grab_to_file('test.png')
tkinter窗口:
master = Tk()
master.wm_attributes("-topmost", 1)
master.title("Report")
master.configure(background='white')
master.iconbitmap(default='icon.ico')
master.resizable(0, 0)
frame1 = Frame(master, bg='white')
frame1.pack(side=BOTTOM, fill=X)
button1 = Button(frame1, compound=BOTTOM, width=307, height=82,
image=photo1, bg='white', command=callback1)
button1.pack(side=TOP, padx=2, pady=8)
答案 0 :(得分:1)
我现在已经解决了这个问题。它似乎与Windows中stripPrefix
的兼容性设置有关。更改以下内容可修复图像捕获,还可修复tkinter窗口分辨率:
pythonw.exe
代表我)c:/python27/
并选择属性这篇文章记载:
Python Imaging Library fails to grab whole screen
希望这可以帮助有同样问题的人。它确实提出了如何自动完成这个问题的问题,对于python应用程序的用户而言,他们不得用户更换这些设置。