Pysimplegui: [خطأ] حفظ الصورة لا يعمل بشكل صحيح بعد تغيير دقة الشاشة

تم إنشاؤها على ٣ يونيو ٢٠٢٠  ·  4تعليقات  ·  مصدر: PySimpleGUI/PySimpleGUI

نوع المشكلات (خطأ ، سؤال)

نظام التشغيل Windows 10 1909

بايثون 3.7.4

PySimpleGUI 4.15.2


4.15.2 تم الإصدار 15 يناير 2020

هذا أمر بالغ الأهمية لمعرفة. لا تقل أهمية معرفة مكان وجود ملف PySimpleGUI.py الخاص بك. يمكنك الحصول عليها عن طريق إضافة هذا إلى أعلى الملف وتشغيله:

import PySimpleGUI as sg
print(sg)
print(sg.version)

مستويات خبرتك في شهور أو سنوات

____2y_____ تجربة برمجة بايثون
_________ خبرة البرمجة بشكل عام
____yes_____ هل استخدمت إطار Python GUI آخر (tkinter ، Qt ، إلخ) سابقًا (نعم / لا جيد)؟

لقد أكملت هذه الخطوات:

  • [x] اقرأ التعليمات الخاصة بكيفية تقديم مشكلة
  • [x] بحثت في المستندات الرئيسية http://www.PySimpleGUI.org عن مشكلتك
  • [] تم البحث في الملف التمهيدي عن المنفذ المحدد الخاص بك إذا لم يكن PySimpleGUI (Qt ، WX ، Remi)
  • [x] بحثت عن البرامج التجريبية المشابهة لهدفك http://www.PySimpleGUI.com
  • [] لاحظ أن هناك أيضًا برامج تجريبية تحت كل منفذ على GitHub
  • [] قم بتشغيل برنامجك خارج مصحح الأخطاء (من سطر الأوامر)
  • [x] تم البحث في المشكلات (المفتوحة والمغلقة) لمعرفة ما إذا كان قد تم الإبلاغ عنها بالفعل

وصف المشكلة / السؤال / التفاصيل

لقد استخدمت كود البرنامج https://github.com/PySimpleGUI/PySimpleGUI/blob/master/DemoPrograms/Demo_Save_Window_As_Image.py لحفظ صوري كملفات PNG. هذا يعمل بشكل جيد.
تحدث المشكلة بعد أن قمت بزيادة دقة الشاشة من 1360 × 768 إلى 1920 × 1080 لحفظ الصور الأكبر حجمًا. تم حفظ جزء فقط من الصورة. تحدث نفس المشكلة مع البرنامج التجريبي:
grafik
دقة الشاشة الأصلية 1360x768:
grafik
يبدو أن الانتقال إلى دقة أقل من الدقة الأصلية يعمل
سؤالي هو: ما هو الجزء الذي يجب علي إعادة تثبيته من Python حتى يعمل البرنامج النصي مرة أخرى؟

بخلاف ذلك ، أنا راضٍ جدًا عن PySimpleGUI ، راجع https://meteorspectroscopy.org/2020/03/27/meteor-spectra-analysis-new-version/ للحصول على وصف للنص الخاص بي بناءً عليه

رمز لتكرار

Demo_Save_Window_As_Image.py انظر أعلاه

Demo Programs

التعليق الأكثر فائدة

@ جيسون ،

شكرا جزيلا على نصيحتك. لقد أضفت السطرين إلى الكود الخاص بي وهو يعمل مع جميع القرارات.

هذا ما أحبه في PySimpleGUI: أحصل دائمًا على حلول لمشاكلي. أيضا استجابة سريعة جدا. رائعة!

مارتن
grafik

ال 4 كومينتر

توفر البرامج التجريبية وظيفتين. أنها توفر أنماط تصميم / أمثلة لكيفية استخدام ميزات أو وظائف PySimpleGUI محددة. الشيء الآخر الذي يفعلونه هو توضيح طرق دمج تطبيقك مع الحزم أو المكتبات الأخرى. لا يُقصد بها أن تكون تطبيقات كاملة ولكن كما هو مضمن ، عروض توضيحية. أنا لست خبيرًا في PIL ، لذا لا أعرف كيفية تقديم النصح لك حول أفضل طريقة لحل مشكلتك باستخدام حزمة PIL.

برنامج Meteor Spectra Analysis مثير للإعجاب!

في وقت ما لدي أيضًا مشاكل في دقة العرض. لا ينتج عن PySimpleGUI ، ولكن بسبب tkinter.

تستخدم الدالة TkWinDisplayChanged في tkinter استدعاء GetDeviceCaps لـ windows للحصول على عرض الشاشة وارتفاعها باستخدام المعلمات HORZRES و VERTRES.

في GetDeviceCaps ، هناك ملاحظة:

يُبلغ GetDeviceCaps المعلومات التي يوفرها برنامج تشغيل العرض. إذا رفض برنامج تشغيل العرض الإبلاغ عن أي معلومات ، يقوم GetDeviceCaps بحساب المعلومات بناءً على الحسابات الثابتة. إذا أبلغ برنامج تشغيل العرض عن معلومات غير صالحة ، يقوم GetDeviceCaps بإرجاع المعلومات غير الصالحة. أيضًا ، إذا رفض برنامج تشغيل العرض الإبلاغ عن المعلومات ، فقد يحسب GetDeviceCaps معلومات غير صحيحة لأنه يفترض إما أن DPI ثابتًا (96 نقطة في البوصة) أو حجمًا ثابتًا (اعتمادًا على المعلومات التي قدمها برنامج تشغيل العرض ولم يقدمها). لسوء الحظ ، يتسبب برنامج تشغيل العرض الذي يتم تطبيقه على Windows Display Driver Model (WDDM) (الذي تم تقديمه في Windows Vista) في عدم حصول GDI على المعلومات ، لذلك يجب على GetDeviceCaps دائمًا حساب المعلومات.

هذا يعني أن النتيجة غير موثوقة ، لذلك في معظم الوقت ، أقوم بإضافة هذا إلى البرنامج النصي الخاص بي قبل استخدام tkinter ، وفي معظم الأحيان يعمل بشكل جيد. عدم تبديل reslution عند تشغيل python أو tkinter ، سيتم تخزين بعض القيم والاحتفاظ بها دون تغيير.

import ctypes
ctypes.windll.user32.SetProcessDPIAware()   # Set unit of GUI to pixels

ربما يمكنك تجربتها.

@ جيسون ،

شكرا جزيلا على نصيحتك. لقد أضفت السطرين إلى الكود الخاص بي وهو يعمل مع جميع القرارات.

هذا ما أحبه في PySimpleGUI: أحصل دائمًا على حلول لمشاكلي. أيضا استجابة سريعة جدا. رائعة!

مارتن
grafik

هذا هو كل شيء @ jason990420 !!! نجاح باهر شكرا لك!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

flowerbug picture flowerbug  ·  4تعليقات

MikeTheWatchGuy picture MikeTheWatchGuy  ·  3تعليقات

xuguojun168 picture xuguojun168  ·  3تعليقات

scmanjarrez picture scmanjarrez  ·  5تعليقات

yogesh-aggarwal picture yogesh-aggarwal  ·  3تعليقات