运行pythonw.exe时,Python脚本tkinter分辨率和屏幕截图大小受到影响

时间:2017-01-14 12:43:32

标签: python python-2.7 tkinter screenshot pythonw

我目前有一个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)

1 个答案:

答案 0 :(得分:1)

我现在已经解决了这个问题。它似乎与Windows中stripPrefix的兼容性设置有关。更改以下内容可修复图像捕获,还可修复tkinter窗口分辨率:

  • 转到你的python目录(pythonw.exe代表我)
  • 右键单击c:/python27/并选择属性
  • 选择兼容性标签
  • “更改所有用户的设置”按钮
  • 检查“在高DPI设置下禁用显示缩放”

这篇文章记载:

Python Imaging Library fails to grab whole screen

希望这可以帮助有同样问题的人。它确实提出了如何自动完成这个问题的问题,对于python应用程序的用户而言,他们不得用户更换这些设置。