Pysimplegui: [Pertanyaan] * PENGGUNA MAC * apakah no_titlebar berfungsi untuk Anda?

Dibuat pada 28 Okt 2020  ·  30Komentar  ·  Sumber: PySimpleGUI/PySimpleGUI

Jenis Masalah (Peningkatan, Kesalahan, Bug, Pertanyaan)

Bug / Masalah dengan tkinter

Apakah no_titlebar berfungsi?
Apakah tooltips berfungsi?

Sistem operasi

Mac

Versi Python

3.6+

Port dan Versi PySimpleGUI

Di sinilah hal-hal menjadi penting untuk dipahami.

Saya ingin tahu dari seseorang yang menjalankan 8.610 dan juga seseorang yang TIDAK menjalankan 8.6.10.

Saya mencoba memahami apakah ini khusus untuk 8.6.10.

Anda bisa mendapatkan versi tkinter mendetail dengan menambahkan baris ini ke kode Anda:

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

Deskripsi Masalah / Pertanyaan / Detail

Saya ingat masalah no_titlebar di Mac dan ingin melakukan upaya bersama untuk memperbaikinya jika ada masalah. Saya benar-benar membutuhkan bantuan yang solid dari beberapa pengguna Mac.

Saya membutuhkan seseorang yang dapat melakukan ini:

  • Dapatkan info versi tkinter yang akurat (kode I disediakan)
  • Mampu mencoba beberapa perbaikan potensial saat diposting ke GitHub

Kode Untuk Menduplikasi

Program singkat yang mengisolasi dan mendemonstrasikan masalah (yaitu jangan menempelkan tautan ke program 400 baris Anda .... melainkan tempel program 10 baris Anda secara penuh).

Ya, memang sulit untuk mempersempit masalah, tetapi ini adalah bagian dari proses debugging. Bantu saya membantu Anda dengan menyediakan sesuatu yang dapat dijalankan sehingga pekerjaan untuk Anda mendapatkan perbaikan atau solusi dapat segera dimulai.

Blok kode yang telah diformat sebelumnya ini siap untuk Anda tempelkan sedikit kode Anda:

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

Anda dapat menguji untuk melihat apakah Anda mendapat masalah dengan menjalankan:

import PySimpleGUI as sg

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

image

Mac Specific Issue community input desired help wanted

Semua 30 komentar

Bagian dari masalah debugging ini di masa lalu adalah bahwa tidak pernah ada tabel yang benar-benar dibuat untuk membantu debugging. Ada 3 variabel yang berperan:

  1. Versi PySimpleGUI
  2. versi tkinter
  3. Versi MacOS

Sebagian besar waktu, itu adalah versi tkinter yang menjadi fokus. Saya tidak yakin apakah tkinter bertanggung jawab atas semua masalah yang terlihat.

Inilah uraian saya:

PySimpleGUI v4.30.0
tkinter v8.6
MacOS 10.15.7

Saya juga ingin menyebutkan bahwa saya menggunakan Homebrew untuk binari python saya.

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

Edit:

Python v3.8.1

macOS High Sierra Versi 10.13.6
PySimpleGUI Versi 4.30.0.12
tcl ver = 8.6 tkinter version = 8.6
tcl versi detail = 8.6.10
Versi Python 3.8.6

Dan ... itu berhasil!
it_works

sunting: Lingkungan yang memberi saya sakit kepala paling sedikit tentang tkinter:

Homebrew -> buat instal tcl-tk
Homebrew -> brew install pyenv -> Python (lihat di bawah)

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

dan untuk menjadikan ini python default saya:

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

Saya mengikuti semua langkah yang terdaftar oleh @norambna dan saya membuatnya bekerja untuk saya. Agak merepotkan untuk melewati semua rintangan.

Python v3.8.6
PySimpleGUI v4.30.0
tkinter v8.6
MacOS 10.15.7
pyenv v1.2.21
tcl-tk v8.6.10

image

Saya senang ini membantu! Saya tahu saya mengalami kesulitan hingga menemukan solusi untuk semua masalah macOS / tkinter saya. Ini tidak akan menyelesaikan semua masalah tkinter, tetapi ini jelas cara terbaik untuk bekerja dengannya di macOS.

Apakah tampaknya tkinter versi 8.6.10 yang memperbaiki masalah ini?

Jika semua versi memiliki masalah kecuali 8.6.10, maka saya dapat memeriksa versi tersebut dan menerapkan "perbaikan" hanya untuk rilis non-8.6.10.

Yang benar-benar membuat saya bingung adalah apakah ini adalah masalah baru-baru ini atau apakah bilah judul tidak pernah berfungsi di Mac. Tampaknya aneh bahwa itu tidak akan pernah berhasil, tetapi sulit untuk memastikannya.

"Perbaikan" yang saya lihat berpotensi merusak hal-hal lain, itulah sebabnya saya ragu-ragu menambahkannya ke kode.

Langkah-langkah ini sangat jelek jadi saya pikir saya harus melakukan sesuatu tentang ini. Pengguna tidak bisa diharapkan melalui masalah sebanyak ini. Saya akan mengumpulkan rilis untuk GitHub dengan perbaikan yang memeriksa nomor versi tkinter dan hanya menerapkannya jika versinya bukan 8.6.10.

Apakah tampaknya tkinter versi 8.6.10 yang memperbaiki masalah ini?

Bagi saya, ya. 8.6.10 memecahkan banyak masalah.

Saya baru saja memposting 4.30.0.13 yang berisi patch jika versinya kurang dari 8.6.10.

Jika ini "memperbaiki" masalah, maka saya ingin mencoba satu tambalan lagi. Patch baru ini menghapus flag wm_overrideredirect setelah pengaturannya terlebih dahulu.

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

Yang ingin saya coba selanjutnya adalah menyetelnya ke True lagi sehingga operasinya menjadi True False True. Idenya di sini adalah bahwa untuk beberapa sistem, mungkin berfungsi dengan benar jika nilainya disetel ke True. Yang tidak ingin saya lakukan adalah menghentikan semua penginstalan yang berfungsi dengan benar hari ini dan menyetelnya ke True lagi dapat memberikan solusi yang melakukan hal yang benar pada semua versi tkinter di Mac.

Anda akan melihat pesan ini tercetak di konsol jika tambalan diterapkan:
* Applying Mac no_titlebar patch *

Salah satu cara untuk mengujinya adalah melalui test harness yang akan menyelamatkan Anda dari keharusan menulis kode untuk memanggil dan menguji popup. Salah satu tab dalam test harness (dipanggil dengan menjalankan file PySimpleGUI.py atau memanggil sg.main() ) digunakan untuk menguji popup.

image

Ini akan memungkinkan Anda dengan cepat memeriksa jendela tanpa bilah judul serta dengan memanggil sembulan dengan bilah judul.

Mungkin sulit dikenali karena latar belakangnya sama dengan jendela pengujian Anda. Jika Anda mengklik tombol No Titlebar , Anda akan melihat jendela kecil ini

image

Saya harap ini memperbaiki versi non 8.6.10 serta tidak berjalan di 8.6.10+. Jika tidak, saya akan segera menyusun tes lain untuk melihat apakah pengaturannya kembali berfungsi.

Jika kita berhasil menyelesaikannya, saya akan mendapatkan rilisnya diposting ke PyPI sebagai rilis prioritas tinggi.

Saya butuh bantuan dari pengguna Mac

Ada tambalan yang diposting ke GitHub untuk mencoba dan mengatasi masalah tanpa bilah judul ini. Saya perlu memahami jika:

  • Patch memperbaiki masalah pada sistem non 8., 6.10
  • Tambalan tidak menyebabkan masalah dengan 8.6.10

Bisakah seseorang mengunduh versi GitHub dan mencobanya?

Saya ingin membantu. Saya sudah menyiapkan semuanya sejauh versi tkinter, tetapi saya tidak yakin bagaimana cara mengimpor PySimpleGUI versi 4.30.0.13. Bagaimana tepatnya Anda mengunduh versi itu dan menggunakannya?

Ini harus dengan tambalan yang sama di sebagian besar versi pembaruan.

Mengupgrade dari GitHub Menggunakan PySimpleGUI

Tidak yakin apa yang harus dilakukan tentang tambalan ini. Saya sedang menyusun rilis ke PyPI sekarang dan tanpa itu diuji dengan benar di Mac, saya harus menarik kode dari rilis. Saya lebih suka merilis masalah yang diketahui daripada kemungkinan masalah yang sama sekali baru. Tentu saja, preferensi saya adalah memperbaikinya untuk selamanya dan memposting ke PyPI.

Jika ada pengguna Mac yang mampu menjalankan beberapa tes, saya, dan saya rasa beberapa sesama pengguna Mac, akan sangat menghargai bantuan tersebut.

Saya tidak ingin menunda rilis sambil menunggu pengguna Mac menguji kode baru. Jadi, saya telah menambahkan lebih banyak kode untuk mengontrol kapan tambalan dijalankan. Saya tidak bisa begitu saja membuang "perbaikan" ini ke luar sana dan berpotensi merusak pengguna Mac yang ada. Secara teknis saya bisa, tapi saya lebih suka tidak membuat masalah bagi pengguna yang memiliki kode yang berfungsi hari ini.

Untuk mengaktifkan tambalan untuk jendela tanpa bilah judul di Mac, panggil set_options dengan parameter enable_mac_notitlebar_patch disetel ke True.

    sg.set_options(enable_mac_notitlebar_patch=True)

Tambalan akan menyebabkan panggilan tambahan saat Jendela tanpa bilah judul dibuat:

root.wm_overrideredirect(False)

Patch hanya akan dijalankan pada Mac yang menjalankan versi tkinter <8.6.10.

Secara default, tambalan dinonaktifkan. Anda harus mengambil tindakan afirmatif untuk mendapatkan tambalan dengan memanggil set_options .

Kode ini ada dalam versi 4.30.0.26 dan sekarang ada di GitHub. Ini akan segera dirilis dalam versi 4.31.0.

Seperti yang saya katakan sebelumnya, saya bersedia menjalankan tes apa pun pada tambalan Anda sebelumnya. Saya memiliki dua perangkat mac berbeda yang menjalankan versi OS berbeda. Saya juga menjalankan berbagai versi python dan tcl / tk.

Mohon maaf jika ini adalah pertanyaan bodoh, tetapi bagaimana cara menginstal versi ini (4.30.0.13 atau 4.30.026)? Saya biasanya menggunakan pip install, tetapi jika saya melakukan sesuatu yang berbeda maka saya perlu sedikit panduan untuk membantu Anda.

4.31.0 telah diposting ke PyPI hari ini. Anda dapat menginstal pip seperti Anda memiliki versi lain.

Tambahkan baris kode di posting sebelumnya dan Anda akan menjalankan patch dengan diaktifkan.

 sg.set_options(enable_mac_notitlebar_patch=True)

Anda dapat menginstal versi GitHub menggunakan antarmuka pengguna sg.main () dengan mengklik tombol merah yang bertuliskan "Upgade". 4.31.0 adalah versi saat ini di GitHub dan yang telah dirilis ke PyPI.

Saya melakukan beberapa tes berbeda pada berbagai versi tcl / tk (8.5.9, 8.6.8, 8.6.10) dan saya menemukan bahwa kode aslinya
image
akan membuat bilah judul tampak dinonaktifkan, tetapi saya dapat mengklik tombol minimalkan atau x. Jika saya meminimalkannya dan kemudian memunculkannya kembali maka titlebar sepenuhnya dinonaktifkan. Ini terjadi pada 8.5.9 dan 8.6.8. Semuanya bekerja dengan baik untuk 8.6.10. (seperti yang disebutkan di komentar sebelumnya)

Selanjutnya, saya mencoba menjalankannya dengan tambalan Anda.
image
Yang akhirnya terjadi adalah bilah judul aktif dan tombol minimalkan dan x berfungsi, dan ketika saya meminimalkannya dan mengembalikan jendela, itu akan dinonaktifkan, mirip dengan yang saya sebutkan di atas.

Jadi masalah masih terjadi dengan versi 8.6.8 dan yang lebih rendah.

Berikut adalah kode asli yang menggunakan tkinter untuk mendapatkan jendela draggable tanpa judul.
image
Saya menemukan kode ini ketika saya mencari-cari untuk mencoba dan menyelesaikan masalah ini dengan mencoba menyembunyikan bilah judul. Ini menggunakan tcl / tk 8.6.8 atau lebih rendah
https://stackoverflow.com/questions/29641616/drag-window-when-using-overrideredirect

Versi
MacOS: 10.15.7
PySimpleGUI: 4.31.0 terbaru
Python: 3.8.1, 3.8.6, 3.9.0

Untuk tcl / tk 8.6.8 atau lebih rendah
baik tambalan atau contoh asli berfungsi

Apakah Anda melihat pesan di konsol bahwa tambalan sedang diterapkan?

Yang aneh dari tes ini adalah bahwa teknik yang saya gunakan untuk mencapai no-titlebar adalah teknik yang sebelumnya diposting di sini. Ini pada dasarnya untuk mengulangi penggantian tetapi dengan nilai False. Aneh juga, ada perilaku penguncian yang tampaknya baru.

Dapatkah Anda memastikan bahwa Anda melihat pesan ini:

'* Applying Mac no_titlebar patch *

Jika Anda tidak melihat pesan ini, berarti tambalan tidak diterapkan.

Akan sangat membantu jika Anda mencetak versi PySimpleGUI selain mencetak versi tkinter hanya untuk memastikan kami bekerja dengan kombinasi variabel yang menurut kami benar.

Saya semakin curiga bahwa MacOS memiliki peran untuk dimainkan di sini juga. Saya tidak mendengar masalah tanpa judul ini dan masalah dengan tooltips sampai awal tahun ini. Fitur-fitur ini adalah yang pertama dirilis di PySimpleGUI, namun tidak ada laporan masalah dengan fitur-fitur ini hingga beberapa waktu yang lalu.

Bagian seret ke mana saja dari ini belum pernah dibahas sebelumnya dan merupakan data baru. Bisakah kita fokus untuk hanya menguji kode tanpa batang judul dan berfungsi?

"Perbaikan" untuk ini mungkin akan berakhir dengan bahwa pengguna Mac harus menjalankan tkinter 8.6.10. Saya menghabiskan terlalu banyak waktu dan energi untuk masalah yang jelas merupakan bug di perangkat lunak Mac. Tidak dapat menguji kode membuat ini menjadi tugas yang hampir mustahil untuk diselesaikan.

Saya pernah ke sini sebelumnya dengan bug tombol tk, yang merupakan masalah yang diketahui selama lebih dari 6 tahun namun belum diperbaiki. Perbaikan untuk itu adalah menambahkan dukungan untuk tombol ttk ke PySimpleGUI. Itu banyak pekerjaan, tetapi pada akhirnya memungkinkan pengguna Mac untuk menggunakan PySimpleGUI. Tidak seperti bug itu, bug ini tampaknya telah menarik perhatian para pengembang tkinter / Mac dan telah diperbaiki di 8.6.10. Itu berarti ada jalur yang harus diikuti oleh pengguna Mac yang bisa mereka jalani sendiri, tanpa jenis peretasan dan solusi yang ditambahkan ke kode.

Saya suka pengguna Mac saya, tetapi sulit untuk membenarkan investasi terlalu banyak untuk mendukung platform itu ketika jumlah pengguna sedikit. Saya tidak percaya penginstalan pernah merusak 10% untuk Mac.

image

Ya, sepertinya merepotkan besar bagi sekelompok kecil pengguna. Saya baru saja mengunduh macOS v11 (baru minggu ini), dan sepertinya ada beberapa perilaku yang berbeda. Misalnya, tombol minimalkan dan x sepenuhnya dinonaktifkan sekarang tidak seperti posting saya sebelumnya.

Satu hal yang juga saya perhatikan dengan tkinter di macOS v11 adalah untuk tk / tcl v8.5.9, saya hanya perlu mengatakan root.overrideredirect(True) tanpa titlebar, tetapi ketika saya mencoba melakukan hal yang sama di tk / tcl v8.6.8 itu tidak berhasil. Saya masih perlu melakukannya

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

untuk membuatnya bekerja.

FYI, saya mendapatkan pesan log yang mengatakan bahwa tambalan sedang diterapkan. Juga versi PySimpleGUI yang saya gunakan adalah 4.31.0 Dirilis 13-Nov-2020.

Saya tidak keberatan mendukung sekelompok kecil pengguna dengan beberapa kode khusus untuk platform Mac. Masalahnya adalah itu target yang bergerak. Saya tidak dapat menemukan pijakan yang stabil baru-baru ini. Segalanya tampak berjalan baik setelah pengguna Mac beralih ke penginstalan dari Python.org alih-alih Homebrew. Itu membuat semua orang menjauh dari rilis yang bermasalah dengan tombol dan tabel. Tapi kemudian ada sesuatu yang berubah. Saya pikir sesuatu itu kemungkinan besar adalah Mac OS.

Seperti yang saya sebutkan sebelumnya, ada 3 variabel yang berperan. Ada versi tkinter, versi PySimpleGUI dan versi MacOC. Saya membuang versi Python dari daftar itu karena sementara tkinter dikemas dengan Python dan dapat berbeda dari satu rilis Python ke yang lain, selama kita melacak versi tkinter, maka versi Python tidak masalah. Saya tidak tahu hasilnya karena kombinasi untuk 3 variabel tersebut selain laporan kadang-kadang "tidak berfungsi".

Melakukan apa pun dengan 8.5.9 sudah terlalu lama. PySimpleGUI mendukung Python 3.4 dan lebih tinggi, yang akan kembali 6 tahun. Itu merupakan tantangan, tetapi itu masuk akal karena Raspberry Pi sering kali hadir dengan versi Python ini. Ada sedikit yang bisa saya lakukan untuk menyiasati ini selain memaksa pengguna Pi untuk memperbarui versi Python mereka dan saya lebih suka tidak terjadi karena itu bukan hal yang sepele untuk dilakukan.

8.5.9 dirilis lebih dari 10 tahun yang lalu. Beberapa konteks ... tahun yang sama 8.5.9 dirilis, begitu pula 2.7.0. Python 3 berada di 3.1. Itu terlalu jauh untuk menjadi nilai riil. Saya memahami konteks yang Anda gunakan untuk itu, yaitu untuk menunjukkan bahwa pada satu waktu tidak ada bilah judul yang berfungsi, tetapi kembali satu dekade untuk menemukan versi yang berfungsi dari apa pun cukup ekstrem. Ini seumur hidup dalam perangkat lunak.

Mendengar bahwa MacOS v11 ada hubungannya dengan cara kerja tkinter bahkan lebih menjengkelkan. OS itu sendiri seharusnya tidak berdampak ... nol ... pada cara kerja tkinter dan Python.

Sangat mengecewakan mendengar bahwa tambalan tidak memiliki dampak positif karena apa yang dilakukannya dalam menyetel wm_overrideredirect kembali ke False, yang seharusnya saya perbaiki masalahnya. Berikut adalah kode yang dieksekusi untuk no-titlebar di 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)

Pesan "Patch no_titlebar Mac Aplikasi" ditampilkan tepat sebelum menyetel wm_overrideredirect kembali ke False.

Saya ingin menerbitkan versi PySimpleGUI yang bekerja dengan semua versi Mac OS di semua versi tkinter, tapi itulah yang telah saya coba lakukan sejak peluncuran awal PySimpleGUI, dan sepertinya upaya terbaru secara konsisten gagal.

Satu-satunya perbaikan kerja yang diketahui yang saya ketahui saat ini adalah mengharuskan pengguna Mac untuk menginstal 8.6.10. Itu sepertinya membuahkan hasil yang berhasil. "Perbaikan" PySimpleGUI dibentuk menjadi pesan kesalahan yang dicetak ketika seseorang mencoba untuk membuat jendela tanpa batang judul atau mencoba untuk mengatur keterangan alat. Ini adalah solusi yang buruk dari sudut pandang kegunaan, tetapi saya tidak melihat jalan keluar lain dari ini. Ini mengalahkan mengharuskan pengguna untuk menginstal versi lama tkinter.

Saya prihatin tentang penggunaan penginstalan homebrew Python dan tkinter. Baru tahun lalu kami mengetahui bahwa homebrew adalah sumber masalah dan menginstal dari Python.org memperbaiki masalah tersebut.

Jika Anda ingin mencoba menambahkan panggilan tambahan ke wm_overrideredirect atau melakukan operasi lain pada objek root tkinter, Anda dapat mengaksesnya secara langsung menggunakan variabel window.TKroot Window anggota window.TKroot . Mungkin Anda dapat menemukan kombinasi panggilan yang akan berfungsi. Saya sangat mencolok.

Saya tidak percaya mereka terkait, tetapi Anda mungkin ingin mencoba mematikan pengaturan modal untuk jendela sebagai percobaan.

Hanya ingin menjelaskan sesuatu tentang tk / tcl 8.5.9 ... satu-satunya alasan saya menggunakan versi itu adalah karena itu dikemas dengan instalasi homebrew python 3.9.1. Saya hanya menggunakan apa pun yang mereka berikan kepada saya. Jadi seperti yang Anda katakan, ini mungkin masalah homebrew.

Saya akan mengotak-atik sedikit dengan mengunduh beberapa rilis python.org. Saya tidak punya masalah membantu Anda memikirkan hal ini. Mungkin saya bisa melakukan beberapa pengujian yang sedikit lebih terkontrol untuk berbagai variabel yang sedang dimainkan. Mungkin perlu sedikit waktu untuk melakukan ini, tetapi Jika Anda memiliki hal-hal tertentu yang ingin saya coba selain yang Anda sebutkan sebelumnya, beri tahu saya.

Hal lain yang ingin saya sebutkan adalah ketika saya menggunakan tkinter dan saya melakukan panggilan root.overrideredirect(True) jendela bahkan tidak akan muncul. Jadi ada sedikit lebih banyak yang terjadi di sini jika Anda bertanya kepada saya karena ketika menggunakan PySimpleGUI jendela akan muncul meskipun tidak menghapus bilah judul, itu hanya menonaktifkannya. (untuk versi <8.6.10)

Saya tidak punya masalah membantu Anda memikirkan hal ini.

Baiklah .... Saya akan memanfaatkan kesempatan ini. Saya ingin menyelesaikan masalah ini sehingga pengguna Mac tidak dipaksa untuk menginstal 8.6.10. Bukan hal yang mudah untuk dilakukan seperti yang telah ditunjukkan melalui komentar di atas.

tk / tcl 8.5.9 ... satu-satunya alasan saya menggunakan versi itu adalah karena versi itu dikemas dengan instalasi homebrew python 3.9.1.

WOW .... lompat biasa WOW ....

Sungguh contoh grafis mengapa menggunakan Homebrew untuk instalasi Python bukanlah ide yang bagus. Di satu sisi, saya dapat melihat seseorang mengatakan itu karena "berhasil" maka tidak masalah untuk digunakan, tetapi tidak sesederhana itu. Jumlah kode tkinter yang ditambahkan sejak 8.5.9 harus signifikan karena tkinter tidak berhenti selama satu dekade.

Saya menemukan ini sebagai berita yang menakjubkan. :-( Benar-benar perjuangan yang berat.

Silakan coba menginstal dari Python.org. Beberapa waktu lalu saya menambahkan kebutuhan untuk menginstal dari Python.org ke dokumentasi:

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

Aneh sekali bahwa masalah ini muncul begitu saja. Meskipun jumlah pengguna Mac kecil, mereka ada dan mereka menggunakan PySimpleGUI di tkinter. Saya yakin jika fitur ini rusak 2 tahun yang lalu, seseorang akan mengatakan sesuatu. Mereka pasti mengeluhkan masalah warna tombol.

Alangkah baiknya jika pengujian diatur dan dilacak dengan cermat. Matriks kombinasi akan sangat membantu.

_Saya ingin melihat apakah ada cara untuk mencoba versi lama dari semuanya dan kemudian melangkah maju sampai ada yang rusak._

Itu akan menjadi rencana ideal saya.

Hanya 2 sen saya. Saya bukan pengguna Mac, tetapi saya harus mengembangkan sesuatu dengan python untuk macOS, jadi dari sinilah saya mendapatkan pengalaman terbatas.

Beberapa bulan yang lalu, ketika saya mencoba opsi saya, saya mencoba versi python yang diunduh langsung dari python.org. Saat itu saya menghabiskan banyak waktu dengan python.org versi 3.6.8, yang dibundel dengan Tcl / Tk 8.6.8. Dan pasti ada bug ketika mencoba berbagai elemen PySimpleGUI. Saya pikir ini hanya lebih baik, tidak begitu dipoles untuk macOS. Secara default, versi Homebrew Python TIDAK disertakan dengan Tcl / Tk (lihat di sini dan di sini ), tetapi tentu saja mungkin ada banyak "brews" tidak resmi. Versi Pyenv tidak disertakan dengan Tcl / Tk. Saya menggunakan trik yang saya posting di atas untuk mencoba Tcl / Tk 8.6.10. Seperti yang saya katakan, ini masih belum sempurna, tetapi dalam pengujian saya, itu pasti pilihan yang lebih baik. Saya harus membuat produk, saya menguji apa yang berhasil dan apa yang tidak, dan menggunakan hal-hal yang berhasil untuk proyek saya.

BTW, jendela modal tidak berfungsi dengan python.org versi 3.6.8, yang dibundel dengan Tcl / Tk 8.6.8 dan mereka juga memberikan masalah dengan pyenv python dan Tcl / Tk 8.6.10. Lihat disini .

edit: dan macOS dilengkapi dengan Tcl / Tk 8.5.9 sebagai bagian dari sistem operasi. Itulah mengapa Anda mendapatkan versi itu jika python Anda tidak dibundel dengan versi Tcl / Tk yang lebih baru. Jadi, jika Anda menggunakan instalasi python biasa, python itu akan menggunakan versi Tcl / Tk yang disertakan dengan sistem operasi. Itulah mengapa Anda mendapatkan Tcl / Tk 8.5.9 saat menggunakan python homebrew biasa. Dan itulah mengapa trik saya harus secara eksplisit menginstruksikan pyenv's python untuk menggunakan instalasi tcl-tk yang lebih baru

Oh ... Aku lupa tentang modal itu.

Tes popup yang kami jalankan dapat dicoba dengan modal dinonaktifkan.

@tkozzer .... bisakah anda mencoba tes popup ini?

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

Juga, hanya untuk memastikan drag_anywhere tidak menyebabkan masalah, coba popup ini juga.

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

Untuk mendapatkan kontrol dan visibilitas maksimum tentang opsi apa yang sedang disetel, beralih ke membuat Jendela kemungkinan merupakan cara yang lebih baik untuk menguji. Berikut adalah program yang dapat kami tangani untuk masalah ini:

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()

Saya sedang menyusun rilis hari ini karena ada beberapa perubahan yang perlu dilakukan agar PyPI secepatnya. Jika jendela modal memang rusak untuk Mac, secara keseluruhan, untuk semua versi tkinter, maka saya akan menonaktifkannya di rilis ini. Dapatkah seseorang memverifikasi bahwa jendela modal tidak berfungsi dengan benar untuk 8.6.10 dan versi lainnya? Saya masih belum jelas tentang kombinasi tkinter dan MacOS yang menghasilkan masalah berbeda ini.

Saya dapat mengonfirmasi bahwa jendela modal tidak berfungsi untuk python.org python 3.6.8 yang disertakan dengan Tcl / Tk 8.6.8. Dan mereka tidak bekerja untuk pyenv's python 3.6.11 bekerja dengan Homebrew's Tcl / Tk 8.6.10. Itu adalah satu-satunya versi yang saya coba dengan masalah khusus itu.

pyenv tidak menyediakan paket / pustaka sendiri. Ini membantu dengan konfigurasi. Anda masih harus memilih apa yang akan diinstal dan kemudian apa yang ingin Anda alihkan.

Untuk Mac, versi Python tidak terlalu penting seperti tkinter dan menurut saya versi MacOS. tkinter 8.6.8 harus berjalan persis sama di 3.6, 3.7, 3.8, 3.9. Yang dapat bervariasi adalah versi tkinter mana yang diinstal saat Anda menginstal 3.6, 3.7, dll, setidaknya di Windows. Salah satu alasan untuk mendapatkan Python dari Python.org adalah Anda mendapatkan versi tkinter tertentu yang dikemas dengan penginstalan.

versi Python tidak terlalu penting seperti tkinter dan menurut saya versi MacOS

macOS High Sierra Versi 10.13.6 untuk semua pengujian saya.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat