2017-01-14 7 views
0

В настоящее время у меня есть скрипт python, который запускает экземпляр GUI tkinter, с кнопкой, которая когда-то щелкнула, делает снимок экрана.Python script tkinter resolution и размер скриншота, выполняемый при запуске pythonw.exe

Когда я запускаю этот скрипт под 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

Я уже исправили. Кажется, он был связан с настройками совместимости для pythonw.exe в Windows. Изменение следующие исправления при захвате изображения, но и разрешение окна Tkinter:

  • Перейти в каталог питона (c:/python27/ для меня)
  • правой кнопкой мыши python.exe и выберите свойства
  • Выберите вкладку Совместимость
  • Нажмите «Изменение настроек для всех пользователей» кнопка
  • Проверьте «Отключить масштабирование дисплея при высоких настройках DPI» box

кредитоваться на этот пост:

Python Imaging Library fails to grab whole screen

Надеюсь, это поможет кому-то с теми же проблемами. Он задает вопрос о том, как это можно сделать автоматически, так как для пользователей приложения python для них не требуется изменять эти параметры.