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()

tkinter布局1_第1张图片

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

可能是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()

 

你可能感兴趣的:(数据结构与算法分析)