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