Pertanyaan Bagaimana cara menghentikan Tkinter Frame agar tidak menyusut agar sesuai dengan isinya?


Ini adalah kode yang memberiku masalah.

f = Frame(root, width=1000, bg="blue")
f.pack(fill=X, expand=True)

l = Label(f, text="hi", width=10, bg="red", fg="white")
l.pack()

Jika saya mengomentari garis dengan Label, Frame menampilkan dengan lebar yang tepat. Namun, menambahkan Label tampaknya mengecilkan Bingkai ke ukuran Label. Apakah ada cara untuk mencegah hal itu terjadi?


32
2018-02-19 03:21


asal


Jawaban:


Secara default, tk frames menyusut atau tumbuh agar sesuai dengan isinya, yang Anda inginkan 99% dari waktu. Istilah yang menggambarkan fitur ini adalah "perambatan geometri". Ada sebuah perintah untuk mengaktifkan atau menonaktifkan geometri saat menggunakan pack (dan a yang serupa untuk grid).

Karena Anda menggunakan paket, sintaksnya adalah:

f.pack_propagate(0)

atau mungkin root.pack_propagate(0), tergantung pada widget mana yang benar-benar ingin Anda pengaruhi.

Itu dikatakan, sebagian besar waktu Anda harus membiarkan tkinter menghitung ukuran. Saat Anda mengubah perambatan geometri dari GUI Anda tidak akan merespon dengan baik perubahan dalam resolusi, perubahan font, dll. Tkinter's geometry managers (pack, place dan grid) sangat kuat. Belajar untuk memanfaatkan kekuatan itu.


46
2018-02-19 19:42