tkinter控件的布局方式

在tkinter中控件布局的方法主要有三种:

(1)pack布局

(2)grid布局

(3)place布局

pack布局采用块的方式组织控件,pack(options,......),options参数可以选择:side、fill、padx/pady、anchor等。
21-设置三个标签,使用pack方法布局。

from tkinter import *
win=Tk()
label1=Label(win,text="擎天柱" ,bg="blue")
label2=Label(win,text="大黄蜂",bg="yellow")
label3=Label(win,text="救护车",bg="red")
label1.pack()
label2.pack()
label3.pack()
win.mainloop()

pack布局默认将所涉及到的标签从上到下依次排列。要想改变标签的位置,可以使用side参数。
22-使用side参数重新布局三个标签。

from tkinter import *
win=Tk()
label1=Label(win,text="擎天柱",bg="blue")
label2=Label(win,text="大黄蜂",bg="yellow")
label3=Label(win,text="救护车",bg="red")
label1.pack(side=LEFT)
label2.pack(side=LEFT)
label3.pack(side=LEFT)
win.mainloop()

此时三个标签会呈现水平排列,除了LEFT(从左往右排列),还有TOP(从上往下排列),BOTTOM(从下往上排列),RIGHT(从右往左排列)。在使用pack方法时,可以使用padx/pady设置控件边界与容器边界的距离。
ipadx/ipady用来控制标签文字与标签容器x轴或y轴的距离。

23-在标签大黄蜂上下增加10像素的间距。

from tkinter import *
win=Tk()
label1=Label(win,text="擎天柱",bg="blue")
label2=Label(win,text="大黄蜂",bg="yellow")
label3=Label(win,text="救护车",bg="red")
label1.pack(fill=X)
label2.pack(pady=10)
label3.pack(fill=X)
win.mainloop()

24-让大黄蜂标签x轴的间距是10。

from tkinter import *
win=Tk()
label1=Label(win,text="擎天柱",bg="blue")
label2=Label(win,text="大黄蜂",bg="yellow")
label3=Label(win,text="救护车",bg="red")
label1.pack()
label2.pack(ipadx=10)
label3.pack()
win.mainloop()

25-在窗口左下方建立一个内容为“OK”的标签,标签与窗口左边与下边的距离是10像素。

from tkinter import *
win=Tk()
label=Label(win,text="OK",font="宋体 20 bold",bg="blue",fg="white")
label.pack(anchor=W,side=LEFT,padx=10,pady=10)
win.mainloop()

grid布局:通过类似表格结构组织控件。
grid(options,......),options参数可以是row、column、padx/pady、rowspan、columnspan、sticky等

26-row与column使用体验。

from tkinter import *
win=Tk()
label1=Label(win,text="擎天柱",bg="blue")
label2=Label(win,text="大黄蜂",bg="yellow")
label3=Label(win,text="救护车",bg="red")
label4=Label(win,text="霸天虎",relief="raised")
label5=Label(win,text="擎天柱",relief="raised")
label6=Label(win,text="大黄蜂",relief="raised")
label7=Label(win,text="救护车",relief="raised")
label8=Label(win,text="霸天虎",relief="raised")
label1.grid(row=0,column=0)
label2.grid(row=0,column=1)
label3.grid(row=0,column=2)
label4.grid(row=0,column=3)
label5.grid(row=1,column=0)
label6.grid(row=1,column=1)
label7.grid(row=1,column=2)
label8.grid(row=1,column=3)
win.mainloop()

27-columnspan的使用

from tkinter import *
win=Tk()
label1=Label(win,text="擎天柱",relief="raised")
label2=Label(win,text="大黄蜂",relief="raised")
label4=Label(win,text="霸天虎",relief="raised")
label5=Label(win,text="擎天柱",relief="raised")
label6=Label(win,text="大黄蜂",relief="raised")
label7=Label(win,text="救护车",relief="raised")
label8=Label(win,text="霸天虎",relief="raised")
label1.grid(row=0,column=0)
label2.grid(row=0,column=1,columnspan=2)
label4.grid(row=0,column=3)
label5.grid(row=1,column=0)
label6.grid(row=1,column=1)
label7.grid(row=1,column=2)
label8.grid(row=1,column=3)
win.mainloop()

columnspan会将标签2、3合并成一个标签。columnspan控制在column方向上合并数量,rowspan表示在row方向上合并的数量。

sticky类似anchor,但是只能设定N/S/W/E,即上/下/左/右

28-sticky的使用

from tkinter import *
win=Tk()
label1=Label(win,text="擎天柱",)
label2=Label(win,bg="green",width=20)
label3=Label(win,text="救护车")
label4=Label(win,bg="blue",width=20)
label1.grid(row=0,column=0,padx=5,pady=5,sticky=W)
label2.grid(row=0,column=1,padx=5,pady=5)
label3.grid(row=1,column=0,padx=5)
label4.grid(row=1,column=1,padx=5)
win.mainloop()

place布局允许指定组件的大小与位置。

29-place布局使用。

from tkinter import *
win=Tk()
label1=Label(win,text="擎天柱",bg="blue")
label2=Label(win,text="大黄蜂",bg="yellow")
label3=Label(win,text="救护车",bg="red")
label1.place(x=0,y=0)
label2.place(x=30,y=50)
label3.place(x=60,y=100)
win.mainloop()

此方法使用x/y参数,x和y参数可以直接设定窗口组件左上方的位置,x是向右递增,y是向下递增。

使用width/height控制控件的实体大小。

30-在窗口设置图片标签位置和大小。

from tkinter import *
win=Tk()
win.geometry(‘800x600‘)
picture1=PhotoImage(file=r‘C:\Users\Administrator\Desktop\xingkong.png‘)
label1=Label(win,image=picture1)
label1.place(x=20,y=30,width=200,height=120)
picture2=PhotoImage(file=r‘C:\Users\Administrator\Desktop\user.png‘)
label2=Label(win,image=picture2)
label2.place(x=200,y=200,width=400,height=240)
win.mainloop()

relx/rely参数设置相对于父窗口的位置,relwidth/relheight参数设置相对大小。

31-relx/rely与relwidth/relheight的应用。

from tkinter import *
win=Tk()
win.geometry(‘600x400‘)
picture1=PhotoImage(file=r"C:\Users\Administrator\Desktop\xingkong.png")
label1=Label(win,image=picture1)
label1.place(relx=0.1,rely=0.1,relwidth=0.8,relheight=0.8)
win.mainloop()

原文地址:https://blog.51cto.com/13526792/2447723

时间: 2024-08-27 01:49:11

tkinter控件的布局方式的相关文章

Android 通过代码改变控件的布局方式

在很多情况下当我们在xml中布局的方式并不能满足我们的要求,而这时我们就需要通过在代码中控制控件的布局根据不同的条件来控制布局.首先来了解一下安卓中的一些单位 dip: device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA.HVGA和QVGA 推荐使用这个,不依赖像素.px: pixels(像素). 不同设备显示效果相同,一般我们HVGA代表320x480像素,这个用的比较多.需要注意的是:当我们在XML布局

python tkinter 控件与布局 项目实战

代码部分: from tkinter import * import tkinter.messagebox as messagebox class Tkdemo(): def __init__(self): master = Tk() master.title("missWjz") master.geometry('800x800') #创建菜单栏 menubar = Menu(master) master.config(menu=menubar) #创建下拉菜单栏 filemenu

Tkinter控件学习总结(一)

此部分总结只涉及基本UI布局.按钮点击回调.控件中用户输入内容的获取等,并不涉及键盘事件.鼠标事件的获取等等. (一)Tkinter的优缺点 Tkinter是Python自带的GUI库,它最好的一个优点就是不用另外装额外 的库拿来就可以用了,而且整个库很小巧,入门简单,这很适合于只想集中精力解决实际问题的人. 如果是作一些简单的界面,Tkinter已经足够胜任.不过对于我来说,它有个致命的缺点就是不支持对png格式文件的显示.其实使用python的image库是可以解析png格式文件的.但我拿一

WPF 控件与布局

[控件到底是什么?] 程序的本质就是"数据+算法"------用户输入原始的数据,算法处理原始数据并得到结果数据.问题就在于程序如何将结果数据显示给用户.同样一组数据,你可以使用LED阵列显示出来,或者以命令行模式借助各种格式控制符(如TAB)对齐并输出,但这些都不如图形界面(GUI  Graphic User Interface)来的友好和方便.GUI的方便在于它对数据展示的直观性,程序员可以通过编程的方式将数据通过图形的方式展示出来,从而避免了用户面对一大堆复杂数据的痛苦.提高了工

Excel开发学习笔记:界面交互与控件的布局

除了业务逻辑之外,比较耗时耗力的就是人机交互了.在编写excel定制程序的过程中,这次用到了以下几种交互方式: 通过excel工作表(worksheet)获取用户输入 通过按钮控件触发功能代码执行 通过TreeView控件显示内容摘要及导航 通过自定义的windows窗体提供交互 工作表的操作放到后面再说,讲一下按钮控件button和Treeview控件的布局. 放置控件的方法: 无非可视化放置和运行时代码加载两种.可视化放置比较直观,通过visual studio的toolbox工具栏拖动需要

背水一战 Windows 10 (39) - 控件(布局类): VariableSizedWrapGrid, Border, Viewbox, SplitView

原文:背水一战 Windows 10 (39) - 控件(布局类): VariableSizedWrapGrid, Border, Viewbox, SplitView [源码下载] 作者:webabcd 介绍背水一战 Windows 10 之 控件(布局类) VariableSizedWrapGrid Border Viewbox SplitView 示例1.VariableSizedWrapGrid 的示例Controls/LayoutControl/VariableSizedWrapGri

Silverlight项目笔记1:UI控件与布局、MVVM、数据绑定、await/async、Linq查询、WCF RIA Services、序列化、委托与事件

最近从技术支持转到开发岗,做Silverlight部分的开发,用的Prism+MVVM,框架由同事搭好,目前做的主要是功能实现,用到了一些东西,侧重于如何使用,总结如下:   1.UI控件与布局     2.MVVM     3.数据绑定     4.await/async     5.Linq查询     6.WCF RIA Services     7.序列化     8.委托与事件 1.UI控件与布局 常用的主要是Grid.StackPanel.Border,其中最常用的的是Grid,是一

DevExpress XtraReports 入门六 控件以程序方式创建一个 交叉表 报表

原文:DevExpress XtraReports 入门六 控件以程序方式创建一个 交叉表 报表 本文只是为了帮助初次接触或是需要DevExpress XtraReports报表的人群使用的,为了帮助更多的人不会像我这样浪费时间才写的这篇文章,高手不想的看请路过 本文内容来DevExpress XtraReports帮助文档,如看过类似的请略过. 废话少说 开始正事 在继续本示例之前,要把所有 必需的程序集 添加到项目的 引用 列表中,并且把一个按钮拖放到窗体上. 然后,以下列方式接管此按钮的

Atitit.hybrid混合型应用 浏览器插件,控件的实现方式 浏览器运行本地程序的解决方案大的总结---提升用户体验and开发效率..

Atitit.hybrid混合型应用 浏览器插件,控件的实现方式 浏览器运行本地程序的解决方案大的总结---提升用户体验and开发效率.. 1. hybrid App 1 1.1. Hybrid App为什么会兴起编辑 1 1.2. 如何实现网页语言与程序语言的混合编辑 2 1.2.1. 多View混合型 2 1.2.2. 单View混合型 2 1.2.3. Web主体型 2 1.3. Hybrid App的瓶颈与未来编辑 3 2. Web App.Hybrid App.Native APP对比