最近在学习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 |
|
相对定位布局:
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()