Pertanyaan Perbedaan antara "mengisi" dan "memperluas" pilihan untuk metode paket tkinter


Saya tahu ini adalah pertanyaan yang terlalu sepele, tetapi saya baru mengenal python, dan saya baru saja mulai menggunakan tkinter modul. Saya sebenarnya mencari tahu di mana-mana, dan saya tidak dapat menemukan jawaban yang memuaskan. Saya menemukan yang berikut:

fill pilihan: menentukan apakah akan menggunakan lebih banyak ruang atau menyimpannya   Dimensi "sendiri".

expand pilihan: berhubungan dengan perluasan widget induk.

Itu masalah adalah bahwa kedua suara ini lebih atau kurang sama. Saya bahkan mencoba beberapa contoh dengan memilih antara 4 nilai fill dan 2 nilai dari expand tetapi menerima kurang lebih output yang sama dalam 2 atau 3 kasus, karena itu saya memiliki pertanyaan ini. Setiap bantuan akan dihargai dalam hal ini. Terima kasih sebelumnya!


20
2018-01-22 13:26


asal


Jawaban:


Dari effbot:

Itu mengisi Opsi memberi tahu manajer bahwa widget ingin mengisi seluruh ruang yang ditetapkan untuk itu. Nilai mengontrol cara mengisi ruang; KEDUA berarti widget harus meluas secara horisontal dan vertikal, X berarti bahwa ia harus meluas hanya secara horisontal, dan Y berarti bahwa ia harus meluas hanya secara vertikal.

Itu memperluas opsi memberi tahu manajer untuk menetapkan ruang tambahan ke kotak widget. Jika widget induk dibuat lebih besar dari yang diperlukan untuk menampung semua widget yang dikemas, setiap ruang yang melebihi akan didistribusikan di antara semua widget yang memiliki memperluas opsi disetel ke nilai bukan nol.

Begitu fill memberi tahu widget untuk tumbuh ke sebanyak ruang tersedia untuk itu dalam arah yang ditentukan, expand memberi tahu master untuk mengambil ruang yang tidak ditugaskan ke widget apa pun dan mendistribusikannya ke semua widget yang tidak nol expand nilai.

Perbedaannya menjadi jelas ketika menjalankan contoh ini:

import Tkinter as tk

root = tk.Tk()
root.geometry('200x200+200+200')

tk.Label(root, text='Label', bg='green').pack(expand=1, fill=tk.Y)
tk.Label(root, text='Label2', bg='red').pack(fill=tk.BOTH)

root.mainloop()

Anda dapat melihat bahwa label dengan expand=1 ditugaskan sebanyak mungkin ruang yang tersedia untuk itu, tetapi hanya menempatinya ke arah yang ditentukan, Y. Label dengan fill=tk.BOTH meluas di kedua arah, tetapi memiliki lebih sedikit ruang yang tersedia.

Expand vs Fill


23
2018-01-22 13:48