Rumah > pembangunan bahagian belakang > Tutorial Python > Adakah terdapat cara yang lebih cekap untuk menambah bar skrol menegak pada bingkai Tkinter berbanding kaedah konvensional?

Adakah terdapat cara yang lebih cekap untuk menambah bar skrol menegak pada bingkai Tkinter berbanding kaedah konvensional?

Barbara Streisand
Lepaskan: 2024-11-28 09:43:12
asal
750 orang telah melayarinya

Is there a more efficient way to add a vertical scrollbar to a Tkinter frame compared to the conventional method?

Bar Tatal Menegak untuk Bingkai Tkinter

Pendekatan anda untuk menambah bar skrol menegak pada bingkai dengan berbilang label pada umumnya betul. Walau bagaimanapun, terdapat beberapa penambahbaikan dan kaedah alternatif untuk dipertimbangkan.

Adakah Kod Cekap?

Ya, kod mencapai matlamatnya dan menambah bar skrol menegak pada bingkai . Walau bagaimanapun, terdapat pendekatan alternatif yang mungkin lebih cekap dan elegan.

Mengapa Kaedah Grid?

Walaupun kaedah tempat boleh berfungsi, kaedah grid lebih disukai untuk ini senario kerana ia membolehkan anda menyusun widget dengan cara yang tersusun dan boleh diramal. Setiap label boleh diletakkan dalam baris dan lajur tertentu, memastikan penjajaran dan jarak yang betul. Kaedah tempat, sebaliknya, boleh membawa kepada hasil yang tidak dapat diramalkan dan kemungkinan pertindihan.

Anchor='nw' untuk Tetingkap Kanvas

Apabila mencipta tetingkap pada kanvas, menambatnya di barat laut (nw) meletakkan tetingkap di sudut kiri atas kanvas. Ini ialah penambat tetingkap lalai, memastikan kandungan di dalam tetingkap akan kelihatan semasa kanvas ditatal.

Penyelesaian Alternatif

Berikut ialah pelaksanaan alternatif menggunakan menegak bingkai tatal:

import tkinter as tk
import tkinter.ttk as ttk

class VerticalScrolledFrame(ttk.Frame):
    def __init__(self, parent, *args, **kwargs):
        ttk.Frame.__init__(self, parent, *args, **kwargs)

        self.canvas = tk.Canvas(self, bd=0, highlightthickness=0)
        self.canvas.pack(side=tk.LEFT, fill='both', expand=True)

        self.scrollbar = ttk.Scrollbar(self, orient='vertical', command=self.canvas.yview)
        self.scrollbar.pack(side=tk.RIGHT, fill='y')

        self.canvas.config(yscrollcommand=self.scrollbar.set)
        self.canvas.bind('<Configure>', self._configure_canvas)

        self.interior = ttk.Frame(self.canvas)
        self.interior_id = self.canvas.create_window(0, 0, window=self.interior, anchor='nw')

    def _configure_canvas(self, event):
        size = (self.interior.winfo_reqwidth(), self.interior.winfo_reqheight())
        self.canvas.config(scrollregion="0 0 %s %s" % size)
        self.canvas.itemconfig(self.interior_id, width=self.canvas.winfo_width())

root = tk.Tk()
frame = VerticalScrolledFrame(root)
frame.pack(fill='both', expand=True)

for i in range(50):
    ttk.Label(frame.interior, text=i).pack()

root.mainloop()
Salin selepas log masuk

Penyelesaian ini mencipta bingkai tatal menegak dan menggunakan kanvas untuk mengurus menatal. Ia secara automatik melaraskan kepada saiz bingkai dalaman dan membenarkan penempatan widget yang mudah dalam kawasan yang ditatal.

Atas ialah kandungan terperinci Adakah terdapat cara yang lebih cekap untuk menambah bar skrol menegak pada bingkai Tkinter berbanding kaedah konvensional?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan