Saya baru saja membangun kembali desktop linux saya, sekarang Mint 20.1 Mate. Saya memiliki python 3.8.5, dan Tk 8.6. Sayangnya saya tidak tahu pasti versi Tk apa yang saya gunakan minggu lalu, saya yakin sudah lama 8.6, tetapi menggunakan Mint 20.1 xcfe dengan python 3.8.5. Tk diinstal melalui apt install python3-tk

Program yang menggunakan Tk GUI, dengan widget teks seperti Entri dan Teks, selama dekade terakhir hingga minggu lalu, digunakan untuk menampilkan teks yang dipilih dengan sorotan yang sangat kontras, hanya menggunakan pengaturan default. Saya tidak yakin apakah itu identik dengan yang digunakan oleh Mint, tetapi itu tidak mengejutkan.

Sekarang saya telah membangun kembali, penyorotan seleksi kurang lebih tidak terlihat. Saya tahu itu telah disorot jika saya melihat dengan sangat hati-hati (abu-abu yang sangat terang), tetapi sekarang sulit untuk digunakan. Saya dapat membuatnya lebih terlihat dengan mengubah latar belakang menjadi sesuatu yang kontras seperti hijau atau oranye, yang secara estetika tidak terlalu memuaskan.

Bagaimana saya bisa mengubah kembali default Tk? Bagaimana saya bisa mengetahui seperti apa mereka seharusnya? Apakah itu memiliki default yang dapat diakses pengguna?

Melihat dokumen, saya dapat menemukan bahwa ada opsi untuk mengubah banyak hal, kecuali untuk sorotan pemilihan teks.

Ini mungkin memberitahu saya bahwa saya harus maju ke ttk dan gaya. Tapi itu sedikit untuk dipelajari, dan banyak program yang harus diubah.

0
Neil_UK 5 Mei 2021, 23:08

2 jawaban

Jawaban Terbaik

Setelah beberapa pencarian, saya menemukan perintah ini

root.tk_setPalette(background='#40E0D0', foreground='black', etc, ...

Ini mengubah semua widget yang ada di seluruh aplikasi, dan menetapkan default untuk yang baru. Menurut halaman ini dapat mengatur opsi berikut ...

Latar depan / latar belakang
activeForeground / activeBackground
pilih Latar Depan / pilih Latar Belakang
sorotWarna / sorotLatar Belakang
dinonaktifkanForeground
sisipkanLatar Belakang
melaluiWarna
pilihWarna

Kebanyakan dari mereka melakukan apa yang saya harapkan. Namun insertBackground tampaknya hanya mengontrol warna kursor sisipan, dan pilih Warnai latar belakang CheckButtons. HighlightColor dan highlightBackground mengontrol garis luar widget masing-masing dengan dan tanpa fokus.

0
Neil_UK 12 Mei 2021, 09:40

Tkinter menggunakan apa yang disebut database opsi untuk defaultnya. Platform yang berbeda akan mendefinisikan database ini secara berbeda. Bisa jadi OS Anda mengubahnya, atau lingkungan desktop spesifik Anda yang menyebabkannya berubah.

Pemilihan teks dikontrol oleh opsi selectbackground dan selectforeground. Untuk setiap opsi ada nilai yang sesuai dalam database opsi. Ada juga nilai untuk setiap kelas widget, sehingga Anda dapat menetapkan satu nilai untuk widget teks dan nilai yang berbeda untuk widget entri.

Untuk selectbackground nama dalam database opsi adalah selectBackground. Anda dapat mengubah nilai dalam database dengan metode option_set. Setiap widget yang dibuat setelah nilai ini disetel akan menggunakan nilai baru.

Misalnya, jika Anda ingin mengatur latar belakang pemilihan Entri menjadi merah muda, Anda dapat melakukan sesuatu seperti ini:

import tkinter as tk

root = tk.Tk()
root.option_add("*Entry.selectBackground", "pink")

Setiap widget Entri yang dibuat setelah baris kode tersebut akan memiliki warna merah muda sebagai default untuk latar belakang pemilihan. Untuk mengubahnya untuk semua widget, Anda cukup menghapus Entry.:

root.option_add("*selectBackground", "pink")

Database opsi agak misterius. Ini berakar pada cara opsi widget ditentukan kembali ketika tk hanya bekerja pada sistem berbasis X11. Ini sangat kuat, tetapi tidak terlalu intuitif.

Dokumentasi online paling detail yang saya ketahui adalah dokumen berjudul Pilihan dan Tk - Panduan Pemula. Itu ditulis dari perspektif tcl/tk daripada python/tkinter, tetapi konsepnya identik. Tkinter Life Preserver di python docs dapat membantu dengan terjemahan ke python.

1
Bryan Oakley 5 Mei 2021, 21:12