我正在創建小型的scratchpad應用程式。整個應用程式是單列和3行。第0行將有一個向右對齊的關閉按鈕,第1行是文本區,第2行將有幾個按鈕用于格式化文本 一個按鈕用于洗掉/清除文本區。我希望洗掉/清除按鈕向右對齊,而其余的按鈕將向左對齊,這樣在格式化按鈕和洗掉按鈕之間就有一個空間。這樣,你就不會意外地清除文本。以下是代碼:
import tkinter as tk
from tkinter import ttk
wn = tk.Tk()
wn.attribute('-type', 'splash')
style = ttk.Style()
style.configure('top.TFrame', border=0, borderwidth=0, background='green' /span>)
style.configure('bottom.TFrame', border=0, borderwidth=0, background='blue')
style.configure('button. TB按鈕, border=5, borderwidth=5, background='#e6e497', bd=5)
root = ttk.Frame(wn, style='top.TFrame', borderwidth=5, relief='Ridge')
button = ttk.Button(root, text='X', width=3, command=lambda: wn.destroy(), style='button.TButton')
txt = tk.Text(root, width=40, background='淺黃色', bd=5)
bottom = ttk.Frame(root, style='bottom.TFrame', width=2000, borderwidth=5, relief='Ridge')
bottombuttona = ttk.Button(bottom, width=3, text='A' )
bottombuttonb = ttk.Button(bottom, width=3, text='B')
bottombuttonc = ttk.Button(bottom, width=3, text='C')
bottombuttond = ttk.Button(bottom, width=3, text='D')
bottombuttone = ttk.Button(bottom, width=3, text='E')
root.grid()
button.grid( column=0, row=0, sticky=tk.E, ipady=4)
txt.grid( column=0, row=1, sticky=tk.NSEW)
bottom.grid( column=0, row=2, sticky=tk.NSEW)
bottombuttona.grid( column=0, row=2, ipady=5)
bottombuttonb.grid( column=1, row=2, ipady=5)
bottombuttonc.grid( column=2, row=2, ipady=5)
bottombuttond.grid( column=3, row=2, ipady=5)
bottombuttone.grid(column=4, row=2, ipady=5, sticky=tk.E)
txt.focus_force()
wn.bind('<Escape>', lambda x: wn.destroy()
wn.mainloop()
這是結果:
問題:我如何將bottomombuttone(E)移動到它所在的bottom框架的右邊(藍色的)?sticky似乎并不奏效
第二個問題:在Frame類中的width選項有什么作用? 盡管設定為2000,但似乎對框架本身的大小沒有任何影響。
uj5u.com熱心網友回復:
你可以使用grid_columnconfigure來讓它作業:
...
bottombuttond.grid( column=3, row=2, ipady=5)
bottom.grid_columnconfigure(4, weight = 1)
bottombuttone.grid( column=4, row=2, ipady=5, sticky=tk.E)
...
將最后一個專案的權重設定為1,允許它擴展以填充它的父項。使用sticky = tk.E,它將粘在它的父節點的右邊。
我做了這個來演示網格權重的作業原理。藍色是父方,C1-3是子方的小部件。

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/330588.html
標籤:
上一篇:Tkinter視窗不顯示(即使在使用mainloop后)。
下一篇:如何在新視窗中放置小工具?

