Pysimplegui: [سؤال] * مستخدمي MAC * هل no_titlebar يعمل من أجلك؟

تم إنشاؤها على ٢٨ أكتوبر ٢٠٢٠  ·  30تعليقات  ·  مصدر: PySimpleGUI/PySimpleGUI

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

علة / مشكلة مع tkinter

لا يعمل no_titlebar؟
هل تعمل تلميحات الأدوات؟

نظام التشغيل

ماك

نسخة بايثون

3.6+

منفذ PySimpleGUI والإصدار

هذا هو المكان الذي تصبح فيه الأشياء مهمة لفهمها.

أود أن أعرف من شخص يعمل 8.610 وأيضًا شخص لا يعمل 8.6.10.

أحاول أن أفهم ما إذا كان هذا خاصًا بـ 8.6.10.

يمكنك الحصول على إصدار tkinter المفصل عن طريق إضافة هذا السطر إلى الكود الخاص بك:

print(sg.tkinter.Tcl().eval('info patchlevel'))

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

أتذكر مشكلات no_titlebar على جهاز Mac وأود بذل جهود متضافرة لإصلاحها إذا كانت هناك مشكلة. أحتاج حقًا إلى بعض المساعدة القوية من اثنين من مستخدمي Mac.

أحتاج إلى شخص يمكنه فعل ذلك:

  • احصل على معلومات إصدار tkinter دقيقة (يتم توفير رمز I)
  • أن تكون قادرًا على تجربة بعض الإصلاحات المحتملة عند نشرها على GitHub

رمز لتكرار

برنامج قصير يعزل المشكلة ويوضحها (على سبيل المثال ، يُرجى عدم لصق ارتباط إلى برنامج 400 سطر الخاص بك ... بدلاً من ذلك ، قم بلصق برنامج 10 أسطر بالكامل).

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

تم إعداد مجموعة التعليمات البرمجية المنسقة مسبقًا هذه لتلصقها في جزء التعليمات البرمجية الخاص بك:

print(sg.tkinter.Tcl().eval('info patchlevel'))

يمكنك إجراء اختبار لمعرفة ما إذا كانت لديك مشكلات عن طريق تشغيل:

import PySimpleGUI as sg

sg.popup_no_titlebar('This should not have a titlebar')

image

Mac Specific Issue community input desired help wanted

ال 30 كومينتر

جزء من مشكلة تصحيح هذا في الماضي هو أنه لم يكن هناك أبدًا جدول مناسب للمساعدة في تصحيح الأخطاء. هناك 3 متغيرات في اللعب:

  1. إصدار PySimpleGUI
  2. نسخة tkinter
  3. إصدار MacOS

في كثير من الأحيان ، كانت نسخة tkinter هي محور التركيز. لست متأكدًا مما إذا كان tkinter مسؤولاً عن جميع المشكلات التي تمت ملاحظتها.

هنا هو تقسيم بلدي:

PySimpleGUI v4.30.0
tkinter v8.6
نظام التشغيل MacOS 10.15.7

أريد أيضًا أن أذكر أنني أستخدم Homebrew في ثنائيات Python الخاصة بي.

Screen Shot 2020-10-28 at 8 10 31 PM

تعديل:

بايثون v3.8.1

macOS High Sierra الإصدار 10.13.6
PySimpleGUI الإصدار 4.30.0.12
tcl ver = 8.6 نسخة tkinter = 8.6
نسخة مفصلة tcl = 8.6.10
إصدار Python 3.8.6

ويعمل!
it_works

تحرير: البيئة التي أعطتني أقل قدر من الصداع فيما يتعلق بـ tkinter:

البيرة -> الشراب تثبيت tcl-tk
Homebrew -> brew install pyenv -> Python (انظر أدناه)

env \
  PATH="$(brew --prefix tcl-tk)/bin:$PATH" \
  LDFLAGS="-L$(brew --prefix tcl-tk)/lib" \
  CPPFLAGS="-I$(brew --prefix tcl-tk)/include" \
  PKG_CONFIG_PATH="$(brew --prefix tcl-tk)/lib/pkgconfig" \
  CFLAGS="-I$(brew --prefix tcl-tk)/include" \
  PYTHON_CONFIGURE_OPTS="--enable-framework --with-tcltk-includes='-I$(brew --prefix tcl-tk)/include' --with-tcltk-libs='-L$(brew --prefix tcl-tk)/lib -ltcl8.6 -ltk8.6'" \
  pyenv install 3.8.6

pyenv global 3.8.6

ولجعل هذه لغة python الافتراضية:

echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bash_profile

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

بايثون v3.8.6
PySimpleGUI v4.30.0
tkinter v8.6
نظام التشغيل MacOS 10.15.7
pyenv v1.2.21
tcl-tk v8.6.10

image

أنا سعيد لأنها ساعدت! أعلم أنني واجهت صعوبة في العثور على حل لجميع مشكلات macOS / tkinter. لن يحل هذا جميع مشكلات tkinter ، لكنه من الواضح أنه أفضل طريقة للعمل معه على macOS.

هل يبدو أن tkinter الإصدار 8.6.10 هو ما يصلح هذه المشكلة؟

إذا كانت جميع الإصدارات بها مشكلات باستثناء 8.6.10 ، فيمكنني التحقق من هذا الإصدار وتطبيق "الإصلاح" فقط على الإصدارات بخلاف الإصدار 8.6.10.

ما كنت مرتبكًا بشأنه حقًا هو ما إذا كانت هذه مشكلة حديثة أو لا يوجد بها شريط عنوان لم يعمل أبدًا على جهاز Mac. يبدو من الغريب أنها لن تنجح أبدًا ، لكن من الصعب الجزم بذلك.

من المحتمل أن يؤدي "الإصلاح" الذي رأيته إلى كسر أشياء أخرى وهذا هو سبب ترددي في إضافته إلى الكود.

هذه الخطوات قبيحة جدًا لذا أعتقد أنه يجب علي فعل شيء حيال ذلك. لا يمكن توقع أن يمر المستخدمون بهذه المشكلة. سأجمع إصدارًا لـ GitHub مع الإصلاح الذي يتحقق من رقم إصدار tkinter ويطبقه فقط عندما لا يكون الإصدار 8.6.10.

هل يبدو أن tkinter الإصدار 8.6.10 هو ما يصلح هذه المشكلة؟

بالنسبة لي نعم. 8.6.10 يحل الكثير من المشكلات.

لقد نشرت للتو 4.30.0.13 يحتوي على تصحيح إذا كان الإصدار أقل من 8.6.10.

إذا أدى هذا إلى "إصلاح" المشكلة ، فأنا أرغب في تجربة تصحيح آخر. هذا التصحيح الجديد يمسح العلامة wm_overricedirect بعد تعيينه لأول مرة.

root.wm_overrideredirect(True)
root.wm_overrideredirect(False)

ما أود تجربته بعد ذلك هو ضبطه على True مرة أخرى بحيث تكون العملية True False True. الفكرة هنا هي أنه بالنسبة لبعض الأنظمة ، قد تعمل بشكل صحيح إذا تم تعيين القيمة على True. ما لا أريد القيام به هو كسر جميع التثبيتات حيث يعمل بشكل صحيح اليوم وتعيينه على True مرة أخرى قد يوفر حلاً يقوم بالشيء الصحيح على جميع إصدارات tkinter على Mac.

سترى هذه الرسالة مطبوعة على وحدة التحكم إذا تم تطبيق التصحيح:
* Applying Mac no_titlebar patch *

إحدى طرق اختبار ذلك هي من خلال أداة الاختبار التي ستوفر عليك الحاجة إلى كتابة التعليمات البرمجية للاتصال واختبار النوافذ المنبثقة. تُستخدم إحدى علامات التبويب في أداة الاختبار (يتم استدعاؤها عن طريق تشغيل ملف PySimpleGUI.py أو استدعاء sg.main() ) لاختبار النوافذ المنبثقة.

image

سيسمح لك ذلك بالتحقق بسرعة من نافذة شريط عدم العنوان وكذلك عن طريق استدعاء النوافذ المنبثقة بشريط العنوان.

قد يكون من الصعب تحديد الموقع لأن الخلفية مماثلة لنافذة الاختبار. إذا قمت بالنقر فوق الزر No Titlebar ، فسترى هذه النافذة الصغيرة

image

آمل أن يعمل هذا على إصلاح الإصدار غير 8.6.10 بالإضافة إلى عدم تشغيله على 8.6.10+. إذا لم يكن الأمر كذلك ، فسأضع اختبارًا آخر سريعًا لمعرفة ما إذا كان التعيين مرة أخرى يعمل.

إذا تم تثبيت هذا الأمر ، فسأرسل الإصدار إلى PyPI كإصدار ذي أولوية عالية.

أحتاج إلى بعض المساعدة من مستخدمي أجهزة Mac

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

  • يعمل التصحيح على إصلاح المشكلة على أنظمة غير 8. ، 6.10
  • التصحيح لا يسبب مشاكل مع 8.6.10

هل يمكن لشخص ما تنزيل إصدار GitHub وتجربته؟

أحب للمساعدة. لقد قمت بإعداد كل شيء بقدر إصدار tkinter ، لكنني لست متأكدًا من كيفية استيراد الإصدار 4.30.0.13 من PySimpleGUI. كيف بالضبط تقوم بتنزيل هذا الإصدار واستخدامه؟

يجب أن يكون بنفس التصحيح في معظم إصدارات التحديث.

الترقية من GitHub باستخدام PySimpleGUI

لست متأكدًا مما يجب فعله حيال هذا التصحيح. أقوم بتجميع إصدار لـ PyPI الآن وبدون اختباره بشكل صحيح على جهاز Mac ، سأضطر إلى سحب الكود من الإصدار. أفضل طرح مشكلة معروفة بدلاً من مجموعة جديدة كاملة من المشاكل. بالطبع ، أفضّل إصلاح هذا نهائيًا ونشره على PyPI.

إذا كان هناك مستخدمو Mac قادرون على إجراء بعض الاختبارات ، فأنا وأعتقد أن عددًا قليلاً من مستخدمي Mac الآخرين ، سأكون ممتنًا للمساعدة.

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

لتمكين التصحيح للنوافذ بدون عنوان شريط على Mac ، قم باستدعاء set_options مع تعيين المعلمة enable_mac_notitlebar_patch على True.

    sg.set_options(enable_mac_notitlebar_patch=True)

سيتسبب التصحيح في مكالمة إضافية عند إنشاء نافذة no-titlebar:

root.wm_overrideredirect(False)

سيتم تنفيذ التصحيح فقط على أجهزة Mac التي تعمل بإصدارات tkinter <8.6.10.

افتراضيا التصحيح معطل. عليك اتخاذ إجراء إيجابي للحصول على التصحيح عن طريق استدعاء set_options .

هذا الرمز موجود في الإصدار 4.30.0.26 وهو موجود على GitHub الآن. سيتم إصداره في الإصدار 4.31.0 قريبًا.

كما قلت من قبل ، سأكون على استعداد لإجراء أي اختبارات على التصحيح السابق. لدي جهازان مختلفان من أجهزة Mac يعملان بإصدارات مختلفة من نظام التشغيل. أقوم أيضًا بتشغيل إصدارات مختلفة من python و tcl / tk.

أعتذر إذا كان هذا سؤال غبي ، لكن كيف يمكنني تثبيت هذه الإصدارات (4.30.0.13 أو 4.30.026)؟ عادةً ما أستخدم تثبيت النقطة ، ولكن إذا قمت بشيء مختلف ، فأنا بحاجة إلى القليل من الإرشادات لمساعدتك.

تم نشر الإصدار 4.31.0 على PyPI في وقت سابق اليوم. يمكنك تثبيت البرنامج كما لو كان لديك إصدارات أخرى.

أضف سطر التعليمات البرمجية في المنشور السابق وستعمل مع تمكين التصحيح.

 sg.set_options(enable_mac_notitlebar_patch=True)

يمكنك تثبيت إصدارات GitHub باستخدام واجهة المستخدم sg.main () بالنقر فوق الزر الأحمر الذي يشير إلى "ترقية". 4.31.0 هو الإصدار الحالي على GitHub وهو الإصدار الذي تم إصداره إلى PyPI.

أجريت بعض الاختبارات المختلفة على إصدارات مختلفة من tcl / tk (8.5.9 ، 8.6.8 ، 8.6.10) ووجدت أن الكود الأصلي
image
سيجعل شريط العنوان يبدو معطلاً ، لكن يمكنني النقر على زر التصغير أو الزر x. إذا قمت بتصغيره ثم أعدته مرة أخرى ، فسيتم تعطيل شريط العنوان تمامًا. يحدث هذا في كل من 8.5.9 و 8.6.8. كل شيء يعمل بشكل جيد بالنسبة 8.6.10. (كما هو مذكور في التعليقات السابقة)

بعد ذلك ، حاولت تشغيله باستخدام التصحيح الخاص بك.
image
ما حدث في النهاية هو أن شريط العنوان كان نشطًا وعمل كل من أزرار التصغير و x ، وعندما قمت بتصغيره وأعدت النافذة احتياطيًا ، سيتم تعطيله ، على غرار ما ذكرته أعلاه.

لذلك لا تزال المشكلات تحدث مع الإصدار 8.6.8 والإصدارات الأقدم.

كان هذا هو الكود الأصلي باستخدام tkinter للحصول على نافذة بدون شريط عنوان قابلة للسحب.
image
لقد وجدت هذا الرمز عندما كنت أبحث في جميع الأنحاء لمحاولة حل مشكلة محاولة إخفاء شريط العنوان. هذا يستخدم tcl / tk 8.6.8 أو أقل
https://stackoverflow.com/questions/29641616/drag-window-when-using-overricedirect

إصدارات
نظام التشغيل MacOS: 10.15.7
PySimpleGUI: 4.31.0 الأحدث
بايثون: 3.8.1 ، 3.8.6 ، 3.9.0

بالنسبة لـ tcl / tk 8.6.8 أو أقل
لا التصحيح أو عمل المثال الأصلي

هل رأيت رسالة على وحدة التحكم تفيد بأنه تم تطبيق التصحيح؟

الغريب في هذه الاختبارات هو أن التقنية التي أستخدمها لتحقيق شريط عدم العنوان هو الأسلوب الذي تم نشره مسبقًا هنا. إنه في الأساس تكرار التجاوز ولكن بقيمة False. من الغريب أيضًا أن يكون هناك سلوك حبس يبدو أنه جديد.

هل يمكنك التأكد من رؤية هذه الرسالة:

'* Applying Mac no_titlebar patch *

إذا كنت لا ترى هذه الرسالة ، فهذا يعني أنه لم يتم تطبيق التصحيح.

سيكون من المفيد إذا قمت بطباعة إصدار PySimpleGUI بالإضافة إلى طباعة إصدار tkinter فقط للتأكد من أننا نعمل مع مجموعة من المتغيرات التي نعتقد أننا نقوم بها.

أنا أشك أكثر وأكثر في أن MacOS له دور يلعبه هنا أيضًا. لم أسمع بمشكلة شريط عدم العنوان هذه ومشكلة تلميحات الأدوات حتى وقت سابق من هذا العام. كانت هذه الميزات من أوائل الميزات التي تم إصدارها في PySimpleGUI ، ومع ذلك لم يتم الإبلاغ عن مشاكل في هذه الميزات حتى وقت ليس ببعيد.

لم تتم مناقشة جزء السحب في أي مكان من هذا من قبل وهو بيانات جديدة. هل يمكننا التركيز على اختبار وتشغيل رمز شريط العنوان بدون عنوان؟

قد ينتهي الأمر بـ "الإصلاح" لهذا الأمر وهو أن مستخدمي Mac يجب عليهم تشغيل tkinter 8.6.10. إنني أقضي الكثير من الوقت والطاقة في حل مشكلة من الواضح أنها خطأ في برنامج Mac. عدم القدرة على اختبار الكود يجعل هذه المهمة شبه مستحيلة لإنجازها.

لقد كنت هنا مرة واحدة من قبل مع خطأ زر tk ، والذي كان مشكلة معروفة لأكثر من 6 سنوات ولم يتم إصلاحها بعد. كان الإصلاح لذلك هو إضافة دعم لأزرار ttk إلى PySimpleGUI. لقد كان هناك الكثير من العمل ، لكنه سمح في النهاية لمستخدمي Mac باستخدام PySimpleGUI. على عكس هذا الخطأ ، يبدو أن هذا الخطأ قد جذب انتباه مطوري tkinter / Mac وتم إصلاحه في 8.6.10. هذا يعني أن هناك مسارًا يمكن لمستخدمي Mac اتباعه بحيث يمكنهم الوصول إليه بمفردهم ، دون إضافة هذه الأنواع من الاختراقات والحلول إلى الكود.

أنا أحب مستخدمي Mac ، ولكن من الصعب تبرير الاستثمار كثيرًا في دعم هذا النظام الأساسي عندما يكون عدد المستخدمين ضئيلًا. لا أعتقد أن عمليات التثبيت قد كسرت 10٪ لنظام التشغيل Mac.

image

نعم ، يبدو الأمر وكأنه متاعب كبيرة لمجموعة صغيرة من المستخدمين. لقد قمت للتو بتنزيل macOS v11 (الجديد هذا الأسبوع) ، ويبدو أن هناك بعض السلوكيات المختلفة. على سبيل المثال ، تم تعطيل أزرار التصغير و x تمامًا الآن على عكس مشاركتي السابقة.

شيء واحد لاحظته أيضًا مع tkinter على macOS v11 هو أنه بالنسبة لـ tk / tcl v8.5.9 ، أحتاج فقط إلى قول root.overrideredirect(True) بدون شريط عنوان ، ولكن عندما أحاول فعل الشيء نفسه على tk / tcl v8.6.8 لا يعمل. ما زلت بحاجة إلى القيام به

root.overrideredirect(True)
root.overrideredirect(False)

من أجل تشغيله.

لمعلوماتك ، كنت أتلقى رسالة السجل تفيد بأنه تم تطبيق التصحيح. كما أن إصدار PySimpleGUI الذي كنت أستخدمه هو 4.31.0 وتم إصداره في 13 نوفمبر 2020.

لا أمانع في دعم مجموعة صغيرة من المستخدمين ببعض التعليمات البرمجية الخاصة بنظام Mac الأساسي. المشكلة هي أنه كان هدفًا متحركًا. لم أتمكن من العثور على قاعدة مستقرة مؤخرًا. كانت الأمور تبدو رائعة على ما يبدو بعد أن تحول مستخدمو Mac إلى التثبيت من Python.org بدلاً من Homebrew. أدى ذلك إلى إبعاد الجميع عن الإصدارات التي واجهت مشكلة في الأزرار والجداول. ولكن بعد ذلك يبدو أن شيئًا ما قد تغير. أعتقد أن شيئًا ما كان على الأرجح نظام التشغيل Mac OS.

كما ذكرت سابقًا ، هناك 3 متغيرات في اللعب. هناك إصدار tkinter وإصدار PySimpleGUI وإصدار MacOC. أقوم برمي إصدار Python من تلك القائمة لأنه بينما يتم حزم tkinter مع Python ويمكن أن يختلف من إصدار واحد من Python إلى إصدار آخر ، طالما أننا نتتبع إصدار tkinter ، فإن إصدار Python لا يهم. ليس لدي معالجة للنتيجة هي أن التوليفات مخصصة لتلك المتغيرات الثلاثة بخلاف تقرير في بعض الأحيان أنه "لا يعمل".

القيام بأي شيء باستخدام 8.5.9 سيعود بعيدًا جدًا. يدعم PySimpleGUI لغة Python 3.4 والإصدارات الأحدث ، والتي تعود إلى 6 سنوات. لقد كان هذا تحديًا ، لكن التحدي معقول لأن Raspberry Pi غالبًا ما يأتي مع هذا الإصدار من Python. ليس هناك الكثير مما يمكنني فعله للتغلب على هذا بخلاف إجبار مستخدمي Pi على تحديث إصدار Python الخاص بهم وأنا أفضل عدم حدوث ذلك لأنه ليس بالأمر التافه.

تم إصدار 8.5.9 منذ أكثر من 10 سنوات. بعض السياق ... تم إصدار 8.5.9 في نفس العام ، وكذلك كان 2.7.0. كان Python 3 عند 3.1. إنه يعود بعيدًا جدًا بحيث لا يكون له أي قيمة حقيقية. أفهم السياق الذي تستخدمه من أجله ، وهو إثبات أنه في وقت من الأوقات لم يعمل شريط العنوان ، ولكن العودة إلى الوراء لعقد من الزمن للعثور على نسخة صالحة للعمل من أي شيء هو أمر متطرف للغاية. إنه العمر في البرامج.

إن سماع أن MacOS v11 له أي تأثير على كيفية عمل tkinter أمر مثير للسخط. يجب ألا يكون لنظام التشغيل نفسه أي تأثير ... صفر ... على كيفية عمل tkinter و Python.

من المخيب للآمال أن نسمع أن التصحيح لم يكن له تأثير إيجابي لأن ما يفعله في تعيين wm_overricedirect مرة أخرى إلى False ، والتي من المفترض أن تحل المشكلة. إليك الكود الذي يتم تنفيذه لشريط بدون عنوان على جهاز Mac:

                MyFlexForm.TKroot.wm_overrideredirect(True)
                # Special case for Mac. Need to clear flag again if not tkinter version 8.6.10+
                if sys.platform.startswith('darwin') and ENABLE_MAC_NOTITLEBAR_PATCH and (sum([int(i) for i in tclversion_detailed.split('.')]) < 24):
                    print('* Applying Mac no_titlebar patch *')
                    MyFlexForm.TKroot.wm_overrideredirect(False)

تظهر الرسالة "Application Mac no_titlebar patch" قبل تعيين wm_overricedirect مرة أخرى إلى False.

أرغب في نشر نسخة من PySimpleGUI تعمل مع جميع إصدارات نظام التشغيل Mac على جميع إصدارات tkinter ، ولكن هذا ما كنت أحاول القيام به منذ الإطلاق الأولي لـ PySimpleGUI ، ويبدو أن الجهود الأخيرة كانت متسقة تقصير.

إصلاح العمل الوحيد المعروف الذي أعرفه في هذه المرحلة هو مطالبة مستخدمي Mac بتثبيت 8.6.10. يبدو أن هذا يعطي نتائج تعمل. يتشكل "الإصلاح" PySimpleGUI ليكون رسالة خطأ تتم طباعتها عندما يحاول شخص ما إنشاء نافذة بدون شريط عناوين أو يحاول تعيين تلميحات الأدوات. إنه حل رهيب من وجهة نظر قابلية الاستخدام ، لكنني لا أرى أي طريقة أخرى للخروج من هذا. إنه يتفوق على مطالبة المستخدمين بتثبيت إصدار قديم من tkinter.

أنا قلق بشأن استخدام تثبيتات البيرة المنزلية من Python و tkinter. في العام الماضي فقط اكتشفنا أن البيرة المنزلية كانت مصدر المشكلات وأن التثبيت من Python.org أصلح هذه المشكلات.

إذا كنت ترغب في محاولة إضافة مكالمات إضافية إلى wm_overrideredirect أو إجراء عملية أخرى على كائن tkinter root ، يمكنك الوصول إليه مباشرةً باستخدام متغير العضو Window window.TKroot . ربما يمكنك العثور على مجموعة من المكالمات التي ستنجح. من الواضح أنني أضرب.

لا أعتقد أنهما مرتبطان ببعضهما البعض ، ولكن قد ترغب في محاولة إيقاف تشغيل الإعداد modal للنافذة كاختبار.

أريد فقط توضيح شيء ما حول tk / tcl 8.5.9 ... السبب الوحيد الذي جعلني أستخدم هذا الإصدار هو أنه تم تعبئته مع تثبيت homebrew python 3.9.1. كنت فقط أستخدم كل ما أعطوني إياه. لذا كما قلت قد تكون مشكلة البيرة.

سوف أتلاعب قليلاً بتنزيل بعض إصدارات python.org. ليس لدي مشكلة في مساعدتك في اكتشاف ذلك. ربما يمكنني إجراء بعض الاختبارات التي يتم التحكم فيها بشكل أكبر قليلاً للمتغيرات المختلفة في اللعب. قد يستغرق الأمر بعض الوقت للقيام بذلك ، ولكن إذا كانت لديك أشياء محددة تريد مني أن أجربها بخلاف ما ذكرته سابقًا ، فأخبرني بذلك.

الشيء الآخر الذي أردت ذكره هو عندما أستخدم tkinter وأجري المكالمة root.overrideredirect(True) لن تظهر نافذة حتى. لذلك هناك المزيد يحدث هنا إذا سألتني منذ استخدام PySimpleGUI ، ستظهر النافذة على الرغم من أنها لا تزيل شريط العنوان ، إلا أنها تعطلها فقط. (للإصدارات <8.6.10)

ليس لدي مشكلة في مساعدتك في اكتشاف ذلك.

حسنًا .... سأقفز على هذه الفرصة. أرغب في حل هذه المشكلة حتى لا يضطر مستخدمو Mac لتثبيت 8.6.10. ليس من السهل القيام به كما هو موضح من خلال التعليقات أعلاه.

tk / tcl 8.5.9 ... السبب الوحيد لاستخدام هذا الإصدار هو أنه تم تعبئته مع تثبيت homebrew python 3.9.1.

نجاح باهر .... القفز عادي نجاح باهر ....

يا له من مثال رسومي عن سبب عدم استخدام Homebrew لتثبيت Python بالفكرة الجيدة. من ناحية ، كان بإمكاني رؤية شخص يقول ذلك لأنه "يعمل" ، فلا بأس من استخدامه ، لكنه ليس بهذه البساطة. يجب أن تكون كمية كود tkinter المضافة منذ 8.5.9 كبيرة لأن tkinter لم يقف ثابتًا لمدة عقد.

أجد أن هذا خبر مذهل. :-( يا لها من معركة شاقة.

الرجاء محاولة التثبيت من Python.org. أضفت بعض الوقت إلى الحاجة إلى التثبيت من Python.org إلى الوثائق:

https://pysimplegui.readthedocs.io/en/latest/#macs

من الغريب أن هذه المشاكل يبدو أنها ظهرت من العدم. على الرغم من أن عدد مستخدمي Mac صغير ، إلا أنهم موجودون ويستخدمون PySimpleGUI على tkinter. أنا متأكد من أنه إذا تم كسر هذه الميزة قبل عامين ، فقد قال شخص ما شيئًا ما. لقد اشتكوا بالتأكيد من مشاكل لون الزر.

سيكون من الجيد أن يتم تنظيم الاختبار وتعقبه بعناية. ستكون مصفوفة المجموعات مفيدة جدًا.

_أود معرفة ما إذا كانت هناك طريقة لتجربة الإصدارات القديمة من كل شيء ثم التقدم للأمام حتى يحدث شيء ما.

ستكون هذه خطتي المثالية.

فقط سنتان. أنا لست من مستخدمي Mac ، لكن كان عليّ تطوير شيء ما في Python لنظام macOS ، لذلك حصلت على تجربتي المحدودة من.

قبل شهرين ، عندما جربت خياراتي ، جربت إصدارات python التي تم تنزيلها مباشرة من python.org. في ذلك الوقت ، أقضي الكثير من الوقت مع الإصدار 3.6.8 من python.org ، والذي يأتي مرفقًا مع Tcl / Tk 8.6.8. ومن المؤكد أنه يحتوي على أخطاء عند تجربة العناصر المختلفة لـ PySimpleGUI. أعتقد أنه مجرد tkinter ، فهو ليس مصقولًا لنظام macOS. بشكل افتراضي ، لا يأتي إصدار البيرة المنزلي من Python مع Tcl / Tk (انظر هنا وهنا ) ، ولكن بالطبع هناك العديد من "المشروبات" غير الرسمية. إصدار Pyenv لا يأتي مع Tcl / Tk. لقد استخدمت الحيلة التي نشرتها أعلاه لتجربة Tcl / Tk 8.6.10. كما قلت ، لا يزال غير مثالي ، لكن في اختباراتي كان بالتأكيد الخيار الأفضل. كان علي أن أصنع منتجًا ، واختبرت ما نجح وما لم ينجح ، واستخدمت الأشياء التي نجحت في مشروعي.

راجع للشغل ، النوافذ المشروطة لا تعمل مع الإصدار 3.6.8 من python.org ، والذي يأتي مرفقًا مع Tcl / Tk 8.6.8 كما أنها تسبب مشاكل مع pyenv python و Tcl / Tk 8.6.10. انظر هنا .

تحرير: ويأتي macOS مع Tcl / Tk 8.5.9 كجزء من نظام التشغيل. هذا هو السبب في حصولك على هذا الإصدار إذا لم يكن python الخاص بك مرفقًا بإصدار أحدث Tcl / Tk. لذلك ، إذا كنت تستخدم تثبيتًا عاديًا للبيثون ، فإن هذا البايثون سيستخدم إصدار Tcl / Tk الذي يأتي مع نظام التشغيل. هذا هو السبب في أنك تحصل على Tcl / Tk 8.5.9 عند استخدام بيثون البيرة العادية. وهذا هو السبب في أن خدعتي يجب أن تصدر تعليمات صريحة لبيثون pyenv لاستخدام أحدث تثبيت للشراب من tcl-tk

أوه ... لقد نسيت هذا الشيء المشروط.

يمكن تجربة الاختبارات المنبثقة التي أجريناها مع تعطيل مشروط.

tkozzer .... هل يمكنك من فضلك تجربة هذا الاختبار المنبثق؟

sg.popup_no_titlebar('This should not have a titlebar', modal=False)

أيضًا ، فقط للتأكد من أن السحب في أي مكان لا يسبب مشكلة ، جرب هذه النافذة المنبثقة أيضًا.

sg.popup_no_titlebar('This should not have a titlebar', modal=False, grab_anywhere=False)

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

import PySimpleGUI as sg


layout = [[sg.Text('A no-titlebar test')],
          [sg.Button('Ok'), sg.Button('Exit')]]

window = sg.Window('Title', layout, no_titlebar=True, grab_anywhere=False, modal=False)

while True:
    event, values = window.read()
    print(event, values)
    if event in (sg.WIN_CLOSED, 'Exit'):
        break

window.close()

أقوم بتجميع إصدار اليوم نظرًا لوجود بعض التغييرات التي يجب أن تصل إلى PyPI بسرعة. إذا كانت النوافذ المشروطة مكسورة بالفعل لنظام التشغيل Mac ، عبر اللوحة ، لجميع إصدارات tkinter ، فسأقوم بتعطيلها في هذا الإصدار. هل يمكن لأي شخص التحقق من أن النوافذ المشروطة لا تعمل بشكل صحيح مع 8.6.10 والإصدارات الأخرى؟ ما زلت غير واضح بشأن مجموعات tkinter و MacOS التي تنتج هذه المشاكل المختلفة.

أستطيع أن أؤكد أن النوافذ المشروطة لا تعمل مع python.org python 3.6.8 الذي يأتي مع Tcl / Tk 8.6.8. وهم لا يعملون مع pyenv's python 3.6.11 بالعمل مع Homebrew's Tcl / Tk 8.6.10. هذه هي الإصدارات الوحيدة التي جربتها مع هذه المشكلة بالذات.

لا توفر pyenv أي حزم / مكتبات من تلقاء نفسها. يساعد في التكوين. لا يزال يتعين عليك اختيار ما تريد تثبيته واختياره ثم ما تريد التبديل بينه.

بالنسبة لنظام التشغيل Mac ، لا يهم إصدار Python بقدر أهمية tkinter وأعتقد أن إصدار MacOS. يجب أن يعمل tkinter 8.6.8 تمامًا على 3.6 و 3.7 و 3.8 و 3.9. ما يمكن أن يختلف هو إصدار tkinter الذي يتم تثبيته عند تثبيت 3.6 ، 3.7 ، إلخ ، على الأقل على Windows. أحد أسباب الحصول على Python من Python.org هو أنك تحصل على إصدار محدد من tkinter مع التثبيت.

لا يهم إصدار Python كثيرًا مثل tkinter وأعتقد أن إصدار MacOS

macOS High Sierra الإصدار 10.13.6 لجميع اختباراتي.

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