python 如何在Tkinter中将同一行中的两个小部件扩展到窗口的两端?

dba5bblo  于 2023-06-20  发布在  Python
关注(0)|答案(1)|浏览(101)

这是我的窗口:

我想将标签中的值尽可能地放置在窗口中。我想把它们放在行的左边和右边。
以下是我正在做的不起作用的事情:

# output frame
self.out_frame = tk.Frame(self)
self.out_frame.grid(row=1, column=0, columnspan=2, sticky="ew", pady=24)

# ... 

# take the hexadecimal value for example ->
ttk.Label(self.out_frame, text="Hexadecimal", font=sub_title_font).grid(row=0, column=0, sticky="w")
self.hex_out.set(str(hexnum))
ttk.Label(self.out_frame, textvariable=self.hex_out, font=sub_title_font).grid(row=0, column=1, sticky="e")
ttk.Separator(self.out_frame, orient=tk.HORIZONTAL).grid(row=1, column=0, columnspan=2, sticky="ew", pady=5)

总而言之,我只是将值标签和实际值分别粘贴到每一行的West和East。但是,我不能让父框架(即out_frame)跨越窗口的整个列空间。

tf7tbtn2

tf7tbtn21#

您需要:

  • 添加self.columnconfigure(0, weight=1)展开self.out_frame以水平填充可用空间
  • 添加self.out_frame.columnconfigure(1, weight=1)展开包含数字的列,以水平填充可用空间

更新代码:

# allocate all the available space horizontally to column 0 inside parent
self.columnconfigure(0, weight=1)

# output frame
self.out_frame = tk.Frame(self)
self.out_frame.grid(row=1, column=0, columnspan=2, sticky="ew", pady=24)

# allocate all the available space horizontally to column 1 inside self.out_frame
self.out_frame.columnconfigure(1, weight=1)

# ...

# take the hexadecimal value for example ->
ttk.Label(self.out_frame, text="Hexadecimal", font=sub_title_font).grid(row=0, column=0, sticky="w")
self.hex_out.set(str(hexnum))
ttk.Label(self.out_frame, textvariable=self.hex_out, font=sub_title_font).grid(row=0, column=1, sticky="e")
ttk.Separator(self.out_frame, orient=tk.HORIZONTAL).grid(row=1, column=0, columnspan=2, sticky="ew", pady=5)

结果是:

相关问题