tkinter布局1

最近在学习python的GUI开发,采用的是tkinter,记录下自己的学习心得。

关于如何布局:

布局方式分为pack(),grid(),place()。

from tkinter import *
top = Tk()
top.geometry("500x400")
fram1 = Frame(top)
fram1.pack(side = LEFT)
for i in range(4):
    for j in range(3):
        Label(fram1, text=1).grid(row=i, column=j, padx=10, pady=10)
mainloop()

不知道为什么四行三列的标签会显示在中左的位置,而不是上左?

可能是fram的位置就是在中左的方位吧,我个人感觉这种pack布局方式真的不好用,因为难以掌控每个控件的真正的位置。

如何让窗口大小不变呢?

可以通过top.resizable(0,0)

place()方式:

绝对定位布局:

x  设置距离左上角的水平长度  单位都是像素

y  设置距离左上角的垂直高度  单位都是像素

width  设置组件所占据的宽度  单位都是像素

height  设置组件所占据的高度  单位都是像素

?

1

2

3

4

5

6

btn = tkinter.Button(root,text = '按钮')

# 位置距离左边100像素,距离上边20像素

btn.place(x = 100,y = 20)

btn1 = tkinter.Button(root,text = '按钮1')

# 设置按钮的宽度和高度

btn1.place(x = 100,y = 100,width = 100,height = 100)

相对定位布局:

relx  设置距离左上角的水平长度  取值(0-1)

rely  设置距离左上角的垂直高度  取值(0-1) 

relwidth  设置组件所占据的宽度  取值(0-1)

relheight  设置组件所占据的高度  取值(0-1)

以上属性设置都是相对于界面宽度或者高度的百分比,可以更具界面的大小的改变而改变~!

!!!禁止同时使用两种摆放方式

from tkinter import *
top = Tk()
top.geometry("500x400")

top.resizable
fram1 = Frame(top)
fram1.place(relx = 0, rely = 0, relwidth = 0.8, relheight = 0.5)
text = Text(fram1)
text.pack(fill = BOTH)
mainloop()

上面这种采用相对布局的方式,可以使得控件的大小随着界面的大小的变化而变化。

tkinter中有带滚动条的

from tkinter.scrolledtext import ScrolledText
from tkinter import *
f = Tk()
t = ScrolledText(f, width=20, height=20, background='#ffffff')
t.pack(expand=1, fill="both")
mainloop()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nwsuaf_huasir

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值