zoukankan      html  css  js  c++  java
  • Tkinter之部件3种放置方式pack、grid、place

    import Tkinter as tk 
    window = tk.Tk()
    window.title('My Window')
    window.geometry('500x300')  
     
    #pack
    #常用的pack(), 多数按照上和西的方式排列,不指定时默认为上。
    tk.Label(window,text='123nihao你好',fg='red').pack(side='top')       # 上
    tk.Label(window,text='123nihao你好',fg='red').pack(side='bottom') # 下
    tk.Label(window,text='123nihao你好',fg='red').pack(side='left')      # 左
    tk.Label(window,text='123nihao你好',fg='red').pack(side='right')   # 右
     
    tk.Label(window,text='123nihao你好',fg='red').pack(anchor='n')    # 北,效果同上
    tk.Label(window,text='123nihao你好',fg='red').pack(anchor='s')    # 南,效果同上
    tk.Label(window,text='123nihao你好',fg='red').pack(anchor='w')  # 西
    tk.Label(window,text='123nihao你好',fg='red').pack(anchor='e')   # 东
     
    可以体会下这两种的不同表现:
    for i in range(3):
        tk.Radiobutton(window, text=i).pack(anchor='w')  #按行追加,前三行依次靠西生成3个按钮
     
    for i in range(3):
        tk.Radiobutton(window, text=i).pack(side='left')   #同一行追加,中间一行依次靠上一按钮生成3个按钮
     
    #grid
    #以规律的方格形式呈现。比如下面的代码就是创建一个三行三列的表格:参数row 为行,colum 为列,padx 单元格左右间距,pady单元格上下间距,ipadx单元格内部元素与单元格的左右间距,ipady单元格内部元素与单元格的上下间距。
    for i in range(3):
        for j in range(3):
          l=tk.Label(window,text='123nihao你好',bg='yellow',font=('Arial', 12), width=10, height=2)
           l.grid(row=i, column=j, padx=5, pady=10, ipadx=1, ipady=20)
        
    #place
    #用精确的坐标来定位,参数anchor='nw'表示锚定点是西北角。
    tk.Label(window, text='Pl', font=('Arial', 20), ).place(x=20, y=100, anchor='nw')
    tk.Label(window, text='Pl', font=('Arial', 20), ).place(x=20, y=200, anchor='nw')
    tk.Label(window, text='Pl', font=('Arial', 20), ).place(x=80, y=100, anchor='nw')
    tk.Label(window, text='Pl', font=('Arial', 20), ).place(x=80, y=200, anchor='nw')
           
    window.mainloop()
     
     
     
    注意
    3种方式不要混在一起同时执行,会导致程序卡掉,暂不清楚原因。
     
    3种方式都支持两行并一行:
    w=tk.Label(window,text='123mn你好',fg='red')
    w.pack(side='top')
    等于:
    tk.Label(window,text='123mn你好',fg='red').pack(side='top')
     
    但是:
    tk.Label(window,text='123mn你好',fg='red').pack(side='top')       # 上
    tk.Label(window,text='123mn你好',fg='red').pack(side='bottom') # 下
    会表示为2个Label部件。
     
    w=tk.Label(window,text='123mn你好',fg='red')
    w.pack(side='top')
    w.pack(side='bottom')
    却只表示1个Label部件,只取最后的bottom。
     
    w=tk.Label(window,text='123mn你好',fg='red')
    w.pack(side='top')
    w=tk.Label(window,text='123mn你好',fg='red')
    w.pack(side='bottom')
    这样写就能表示2个Label部件。
     
    综合来看,多个部件时还是一行的写法更方便。
     
     
     
  • 相关阅读:
    Wedding(2-SAT)
    JSOI2010 满汉全席
    2-SAT问题
    Tarjan求桥
    遥远的国度
    NOIP2014 联合权值
    部落冲突
    仓鼠找sugar
    2018.09.09 DL24 Day2总结
    php一些易犯的错误
  • 原文地址:https://www.cnblogs.com/myshuzhimei/p/11764532.html
Copyright © 2011-2022 走看看