我的目標是一些應用程式,頂部有工具列,底部有一些表格。應用程式應如下所示:
----------------------------------
' l | m1 | m2 | r | '
'---------------------------------
' alpha | = | beta '
'--------------------------------'
' lb1r | lb1l '
'---------------------------------
' lb2r | lb2l '
'---------------------------------
標題
----------------------------------
' ' ' ' ' '
' l ' m1 ' m2 ' r ' '
' ' ' ' ' '
'---------------------------------
應該用作工具列。身體應該以某種表格的形式可視化。
不幸的是,我無法合并 tkinter 網格中的單元格,我現在擁有的應用程式如下所示:
-----------------------------------
' ' ' ' '
' l ' m1 ' m2 ' r '
' ' ' ' '
'----------------------------------
' alpha ' = ' ' beta'
'---------------------------------'
' lb1r ' ' 'lb1l '
'----------------------------------
' lb2r ' ' 'lb2l '
'----------------------------------
如何解決格式化此應用程式的問題?
編輯:我試圖用教程解決這個問題。我現在的問題是,如何以網格跨越整個紅框的方式調整藍框的寬度。
意味著,我想從這個轉換
--------------------------------------------------
' l | m1 | m2 | r | '
'-------------------------------------------------
' ' alpha | = | beta ' '
' '--------------------------------' '
' red ' lb1r | lb1l ' red '
' '--------------------------------- '
' ' lb2r | lb2l ' '
--------------------------------------------------
在第一個插圖中沒有紅色邊框和拉伸表。
我編輯的代碼:
from tkinter import *
root = Tk()
frm_root = Frame(root,bg='red',width=600)
frm_root.pack()
frm_toolbar = Frame(frm_root, width=600, height=25,bg='green')
frm_tbl = Frame(frm_root, bg='blue')
##display_green
frm_toolbar.grid(column = 0, row = 0)
frm_toolbar.pack_propagate(0) #when using pack inside of the display
bt11 = Button(frm_toolbar, text="L")
bt11.pack(side='left')
bt12 = Button(frm_toolbar, text="M1")
bt12.pack(side='left')
bt13 = Button(frm_toolbar, text="M2")
bt13.pack(side='left')
bt14 = Button(frm_toolbar, text="R")
bt14.pack(side='left')
##display_yellow
frm_tbl.grid(column = 0, row = 1)
frm_tbl.pack_propagate(0) #when using pack inside of the display
bt21= Button(frm_tbl, text="Alpha")
bt21.grid(column=0, row = 1)
lb0= Label(frm_tbl, text="=")
lb0.grid(column=1, row = 1,columnspan=2)
bt22 = Button(frm_tbl, text="Beta")
bt22.grid(column=3, row = 1)
lb11 = Label(frm_tbl, text="sadasdasdadadsad")
lb11.grid(column=0, row=2,columnspan=2)
lb12 = Label(frm_tbl, text="lb1r")
lb12.grid(column=2, row=2 ,columnspan=2)
lb21 = Label(frm_tbl, text="lbl1l")
lb21.grid(column=0, row=3, columnspan=2)
lb22 = Label(frm_tbl, text="lb1rasdasdadasd")
lb22.grid(column=2, row=3,columnspan=2)
frm_tbl.grid_columnconfigure(1, weight=1)
root.mainloop()
uj5u.com熱心網友回復:
為了達到你想要的,我已經配置了你的代碼。我已經用粘性替換了 columnspan 并更改了列以使其正確對齊。
from tkinter import *
root = Tk()
frm_root = Frame(root,bg='red',width=600)
frm_root.pack()
frm_toolbar = Frame(frm_root, width=600, height=25,bg='green')
frm_tbl = Frame(frm_root, bg='blue')
##display_green
frm_toolbar.grid(column = 0, row = 0)
frm_toolbar.pack_propagate(0) #when using pack inside of the display
bt11 = Button(frm_toolbar, text="L")
bt11.pack(side='left')
bt12 = Button(frm_toolbar, text="M1")
bt12.pack(side='left')
bt13 = Button(frm_toolbar, text="M2")
bt13.pack(side='left')
bt14 = Button(frm_toolbar, text="R")
bt14.pack(side='left')
##display_yellow
frm_tbl.grid(column = 0, row = 1,sticky='we')
frm_tbl.pack_propagate(0) #when using pack inside of the display
bt21= Button(frm_tbl, text="Alpha")
bt21.grid(column=0, row = 1)
lb0= Label(frm_tbl, text="=")
lb0.grid(column=1, row = 1,sticky='ew')
bt22 = Button(frm_tbl, text="Beta")
bt22.grid(column=2, row = 1,sticky='ew')
lb11 = Label(frm_tbl, text="sadasdasdadadsad")
lb11.grid(column=1, row=2,sticky='ew')
lb12 = Label(frm_tbl, text="lb1r")
lb12.grid(column=2, row=2,sticky='ew')
lb21 = Label(frm_tbl, text="lbl1l")
lb21.grid(column=0, row=3,sticky='ew')
lb22 = Label(frm_tbl, text="lb1rasdasdadasd")
lb22.grid(column=2, row=3)
frm_tbl.grid_columnconfigure(1, weight=1)
root.mainloop()
重新考慮您的初始代碼,您也可以使用 columnspan。此外,如果您對功能塊的代碼進行排序,例如:
from tkinter import *
root = Tk()
root.title("BasicWindow")
#widget construction
bt11 = Button(root, text="L")
bt12 = Button(root, text="M1")
bt13 = Button(root, text="M2")
bt14 = Button(root, text="R")
bt21= Button(root, text="Alpha")
lb0= Label(root, text="=")
bt22 = Button(root, text="Beta")
lb11 = Label(root, text="lbl1l")
lb12 = Label(root, text="lb1r")
lb21 = Label(root, text="lbl1l")
lb22 = Label(root, text="lb1r")
#widget placement
bt11.grid(column=0, row=0,sticky='ew')
bt12.grid(column=1, row=0)
bt13.grid(column=2, row=0)
bt14.grid(column=3, row=0,sticky='ew')
bt21.grid(column=0, row=1)
lb0.grid(column=1, row=1,columnspan=2)
bt22.grid(column=3, row=1)
lb11.grid(column=0, row=2)
lb12.grid(column=3, row=2)
lb21.grid(column=0, row=3)
lb22.grid(column=3, row=3)
root.mainloop()
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/431689.html
