python tkinter grid 布局

    技术2022-07-15  75

    1.  位置和大小设置

    grid设置位置, columnconfigure, rowconfigure设置大小

     

    2. Lable 示例

    #!/usr/bin/env python3 import sys import tkinter import tkinter.ttk def guiInit(): top = tkinter.Tk() # 窗口大小和位置 WxH+X+Y # 窗口大小 宽800, 高480 # 窗口位置 距左边200, 距上边100 top.geometry('800x480+200+100') label1 = tkinter.ttk.Label(top, width=10, text='label1', relief='raised') label2 = tkinter.ttk.Label(top, width=10, text='label2', relief='raised') label3 = tkinter.ttk.Label(top, width=10, text='label3', relief='raised') label4 = tkinter.ttk.Label(top, width=10, text='label4', relief='raised') label5 = tkinter.ttk.Label(top, width=10, text='label5', relief='raised') label6 = tkinter.ttk.Label(top, width=10, text='label6', relief='raised') ''' 指定位置 YourWidget.grip(row=N, column=N, sticky='nsew', rowspan=N, columnspan=N, padx=N, pady=N) 指定大小: weight表示权重如果所有单元格全为1, 则表示等大小 weight=0: YourWidget的实际大小,固定大小 YourWidget.rowconfigure(N, weight=1) YourWidget.columnconfigure(N, weight=1) ''' label1.grid(row=0,column=0, sticky='nsew') label2.grid(row=0,column=1, sticky='nsew') label5.grid(row=0,column=2, sticky='nsew', rowspan=2, padx=5, pady=5) label3.grid(row=1,column=0, sticky='nsew') label4.grid(row=1,column=1, sticky='nsew') label6.grid(row=2,column=0, sticky='nsew', columnspan=3) ''' top.rowconfigure("all", weight=1) top.columnconfigure("all", weight=1) ''' top.rowconfigure(0, weight=3) top.rowconfigure(1, weight=1) top.rowconfigure(2, weight=0) #top.columnconfigure([0, 1], weight=1) top.columnconfigure(0, weight=3) top.columnconfigure(1, weight=1) top.columnconfigure(2, weight=0) top.mainloop() def main(): guiInit() if __name__ == '__main__' : main()

     

    3. TreeView 示例

    #!/usr/bin/env python3 import sys import tkinter import tkinter.ttk import pprint ## 0: grid geometry ## 1: pack geometry bgrid = True def guiInit(): col = [] datav = [] data = {} for i in range(1, 100): col.append("col" + str(i)) datav.append("data" + str(i) ) for i in range(1, 100): data["line"+str(i)] = datav top = tkinter.Tk() # 窗口大小和位置 WxH+X+Y # 窗口大小 宽800, 高480 # 窗口位置 距左边200, 距上边100 top.geometry('800x480+200+100') tree = tkinter.ttk.Treeview(top, columns = col) tree.heading('#0', text="city") for colv in col: tree.column(colv, width=150, anchor='w') tree.heading(colv, text=colv) for k,v in data.items(): itm = tree.insert("", "end", text=k, values=v) #pprint.pprint(tree.item(itm)) yscrollbar = tkinter.ttk.Scrollbar(top, orient=tkinter.VERTICAL, command=tree.yview) xscrollbar = tkinter.ttk.Scrollbar(top, orient=tkinter.HORIZONTAL, command=tree.xview) tree.configure(yscrollcommand = yscrollbar.set) tree.configure(xscrollcommand = xscrollbar.set) if bgrid: ## 1. 设置位置 tree.grid(row=0, column=0, sticky='nsew') yscrollbar.grid(row=0, column=1, sticky='nsew') xscrollbar.grid(row=1, column=0, sticky='nsew') ## 2. 设置大小 ## tree@(0, 0):r.weight=1, c.weight=1 ## 表格, row.weight = 1 高度随着窗口动态变化 ## 表格, column.weight = 1 宽度随着窗口动态变化 top.rowconfigure(0, weight=1) top.columnconfigure(0, weight=1) ## xball@(1, 0): r.weight=0, c.weight=1 ## 横向滚动条, row.weight = 0 高度不变 ## 横向滚动条, column.weight = 1 宽度随着窗口动态变化 top.rowconfigure(1, weight=0) ## yball@(0, 1):r.weight=1, c.weight=0 ## 竖向滚动条, row.weight = 1 高度随着窗口动态变化 ## 竖向滚动条, column.weight = 0 宽度不变 top.columnconfigure(1, weight=0) else: yscrollbar.pack(side='right', fill='y') xscrollbar.pack(side='bottom', fill='x') tree.pack(side='top', expand = 1, fill = 'both') top.mainloop() def main(): guiInit() if __name__ == '__main__' : main()

     

    Processed: 0.011, SQL: 9