我正在嘗試將兩個框架放在另一個框架內,但我無法使用布局管理器來完成。
框架是從ttk匯入的,灰色區域是邊框的結果。我的目標是,第一個影像填充左側的所有灰色區域,第二個填充右側的灰色區域。最終,我將用另一個小部件更改第二張圖片。我的代碼是:
class Window(Frame):
def __init__(self, master, *args):
super().__init__(master, *args)
self.principal_frame = Frame(self.master)
self.principal_frame.grid(column=1, row=1, sticky='nsew')
self.master.columnconfigure(1, weight=1)
self.master.rowconfigure(1, weight=1)
self.widgets()
def tactical_window(self):
self.pages.select([self.third_frame])
def widgets(self):
self.image_pitch = PhotoImage(file=...)
self.pages = ttk.Notebook(self.principal_frame)
self.pages.grid(column=0, row=0, sticky='nsew')
self.third_frame = Frame(self.pages, bg='white')
self.third_frame.pack(fill=tk.BOTH, expand=True)
self.pages.add(self.third_frame)
# Third Frame
self.frame_tactic_pitch = ttk.Frame(self.third_frame, borderwidth=2)
self.frame_player_list = ttk.Frame(self.third_frame, borderwidth=3)
self.frame_pitch_tactic.pack(side=tk.LEFT, expand=True, fill=tk.BOTH, pady=2, padx=2)
self.frame_players_tactic.pack(side=tk.LEFT, expand=False, fill=tk.Y, pady=2, padx=2)
# Pitch
self.canvas_pitch = tk.Canvas(self.frame_tactic_pitch)
self.canvas_pitch.pack()
self.canvas_pitch.create_image(0, 0, image=self.image_pitch, anchor='nw')
self.canvas_pitch1 = tk.Canvas(self.frame_player_list)
self.canvas_pitch1.pack()
self.canvas_pitch1.create_image(0, 0, image=self.image_pitch, anchor='nw')
...
我正在嘗試self.frame_tactic_pitch使用 ≈75%self.third_frame和self.frame_player_list剩余的。
并且小部件畫布使用總數,self.frame_tactic_pitch但影像相當適合,放大視窗是否會使影像變形并不重要。
uj5u.com熱心網友回復:
實作您想要的一種簡單方法是創建一個統一組,方法是為兩列提供相同的uniform選項值。然后,給每一列一個比例權重。在您的情況下,它是 3 和 1。grid然后將保持尺寸與重量嚴格成比例。
來自官方網格檔案:
-uniform 選項在提供非空值時,將該列與具有相同 -uniform 值的其他列放在一個統一組中。分配屬于統一組的列的空間,以便它們的大小始終與其-weight 值嚴格成比例。
它看起來類似于以下示例。此示例將兩個框架放在根視窗中,但該技術也可以通過將框架放在另一個框架中來作業。
import tkinter as tk
root = tk.Tk()
root.geometry("300x200")
f1 = tk.Frame(root, bd=1, relief="raised")
f2 = tk.Frame(root, bd=1, relief="raised")
root.grid_rowconfigure(0, weight=1)
root.grid_columnconfigure(0, weight=3, uniform="group1")
root.grid_columnconfigure(1, weight=1, uniform="group1")
f1.grid(row=0, column=0, sticky="nsew")
f2.grid(row=0, column=1, sticky="nsew")
root.mainloop()

轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/467708.html
上一篇:如何在段落中間對齊鏈接?
下一篇:如何限制UI中顯示的描述?
