'Tkinter教程之Place篇

原创 2007年10月06日 16:01:00
'''Tkinter教程之Place篇'''
'''1.使用绝对坐标将组件放到指定的位置'''
# -*- coding: cp936 -*-
#
 不设置root的大小,使用默认
from Tkinter import *
root 
= Tk()
lb 
= Label(root,text = 'hello Place')
# lb.place(relx = 1,rely = 0.5,anchor = CENTER)
#
 使用绝对坐标将Label放置到(0,0)位置上
lb.place(x = 0,y = 0,anchor = NW)
root.mainloop()
# x,y指定组件放置的绝对位置
'''2.使用相对坐标放置组件位置'''
# -*- coding: cp936 -*-
#
 不设置root的大小,使用默认
from Tkinter import *
root 
= Tk()
lb 
= Label(root,text = 'hello Place')
# lb.place(relx = 1,rely = 0.5,anchor = CENTER)
#
 使用相对坐标(0.5,0.5)将Label放置到(0.5*sx,0.5.sy)位置上
lb.place(relx = 0.5,rely = 0.5,anchor = CENTER)
root.mainloop()
# relx,rely指定组件放置的绝对位置,范围为(0-1.0)
'''3.使用place同时指定多个组件'''
# -*- coding: cp936 -*-
#
 不设置root的大小,使用默认
from Tkinter import *
root 
= Tk()
root.geometry(
'800x600')
lb 
= Label(root,text = 'hello Place')
# lb.place(relx = 1,rely = 0.5,anchor = CENTER)
#
 使用相对坐标(0.5,0.5)将Label放置到(0.5*sx,0.5.sy)位置上
= IntVar()
for i in range(5):
    Radiobutton(
        root,
        text 
= 'Radio' + str(i),
        variable 
= v,
        value 
= i
        ).place(x 
= 80* i,anchor = NW)
root.mainloop()
# 使用place来指定各个Radiobutton的位置
'''4.同时使用相对和绝对坐标'''
# 同时设置relx,rely和x,y的值
#
 -*- coding: cp936 -*-
#
 不设置root的大小,使用默认
from Tkinter import *
root 
= Tk()
root.geometry(
'800x600')
lb1 
= Label(root,text = 'hello Place',fg = 'green')
lb2 
= Label(root,text = 'hello Place',fg = 'red')
# 先设置相对坐标为(0.5,0.5),再使用(-200,-200)将坐标作偏移(-200,-200)
lb1.place(relx = 0.5,rely = 0.5,anchor = CENTER,x = -200,y = -200)
# 先设置相对坐标为(0.5,0.5),再使用(-300,-300)将坐标作偏移(-300,-300)
lb2.place(relx = 0.5,rely = 0.5,anchor = CENTER,x = -300,y = -300)
root.mainloop()
# 同时使用相对和绝对坐标时,相对坐标优先操作,然后是在这个相对坐标的基础上进行偏移
'''5.使用in来指定放置的容器'''
# -*- coding: cp936 -*-
#
 使用in属性来指定放置到的容器是那一个
from Tkinter import *
root 
= Tk()
root.geometry(
'800x600')
lb1 
= Label(root,text = 'hello Place',fg = 'green')
bt1 
= Button(root,text = 'hello Place',fg = 'red')
# 创建一个Label
lb1.place(relx = 0.5,rely = 0.5,anchor = CENTER)

# 在root同创建一个Button,目的是与bt1相比较
bt2 = Button(root,text = 'button in root',fg = 'yellow')
bt2.place(anchor 
= W)
# 在Label中创建一个Button
bt1.place(in_ = lb1,anchor = W)
root.mainloop()
# 注意bt2放置的位置是在root的(0,0)处,而button1放置的位置是在lb1的(0,0)处,原因是由于bt1使用了in来指定放置的窗口为lb1
'''6.深入in用法'''
# -*- coding: cp936 -*-
#
 使用in属性来指定放置到的容器是那一个,仅能是其master
from Tkinter import *
root 
= Tk()
# root.geometry('800x600')
#
 创建两个Frame用作容器
fm1 = Frame(root,bg = 'red',width = 40,height = 40)
fm2 
= Frame(root,bg = 'blue',width = 40,height = 40)
# 再在fm1中创建一个fm3
fm3 = Frame(fm1,bg = 'yellow',width = 20,height = 20)

# 创建一个Label,它的master为fm1
lb1 = Label(fm1,text = 'hello Place',fg = 'green')
lb1.place(in_ 
= fm1,relx = 0.5,rely = 0.5,anchor = CENTER)
# 创建一个Button,它的master为fm1
bt1 = Button(fm1,text = 'hello Place',fg = 'red')

# 将bt1放置到fm2中,程序报错
#
 去掉下面这条语句就可以使用了,可以看到lb1已经正确的放置到fm1的中心位置了
#
 bt1.place(in_ = fm2,anchor = W)

# 将上面的语句改为下面,即将bt1放置到其fm1的子组件fm3中,这样也是可以的
bt1.place(in_ = fm3,anchor = W)

fm1.pack()
fm2.pack()
fm3.pack()
root.mainloop()
# in不是可以随意指定放置的组件的,如果使用in这个参数这个组件必需满足:是其父容器或父容器的子组件
'''7.事件与Place结合使用'''
# -*- coding: cp936 -*-
#
 最后使用两个place方法来动态改变两个Frame的大小。
from Tkinter import *
root 
= Tk()
split 
= 0.5
fm1 
= Frame(root,bg = 'red')
fm2 
= Frame(root,bg = 'blue')
# 单击fm1时增大它的占有区域0.1
def incFm1(event):
    
global split
    
if split < 1:
        split 
+= 0.1
    fm1.place(rely 
= 0,relheight = split,relwidth = 1)
    fm2.place(rely 
= split,relheight = 1 - split,relwidth = 1)
# 单击fm2时增大它的占有区域0.1
def incFm2(event):
    
global split
    
if split > 0:
        split 
-= 0.1
    fm1.place(rely 
= 0,relheight = split,relwidth = 1)
    fm2.place(rely 
= split,relheight = 1 - split,relwidth = 1)

# 这两语句要使用,不然开始看不到两个frame,也就没法点击它们了
fm1.place(rely = 0,relheight = split,relwidth = 1)
fm2.place(rely 
= split,relheight = 1 - split,relwidth = 1)
# 绑定单击事件
fm1.bind('<Button-1>',incFm1)
fm2.bind(
'<Button-1>',incFm2)

root.mainloop()
# 为SplitWindow的原型了,再改动一下就可以实现一个SplitWindow了。
 
版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

禁止右键访问----破解与攻防

要禁止访问者查看网页源代码,我们首先要了解一下查看源代码的方式(以IE 5.0为例)。一是右键菜单方式; 二是窗口菜单栏查看方式,即选择"查看"*"源文件"方式。要彻底禁止访问者查看网页源代码,就必须...

Python Tkinter教程之Place篇

'''Tkinter教程之Place篇''' '''1.使用绝对坐标将组件放到指定的位置''' # -*- coding: cp936 -*- # ...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

[Tkinter 教程12] 布局管理 (Pack Place Grid)

本文译自:  http://www.python-course.eu/tkinter_layout_management.php 这个系列的 tkinter 文章图文并茂, 查了一堆教程, 就这个讲的...

Tkinter pack grid place函数详细介绍

Tkinter参考中最推荐使用的一个布局器。实现机制是将Widget逻辑上分割成表格,在指定的位置放置想要的Widget就可以了。 使用grid显示窗体的主要流程: self.thing ...

Tkinter教程之Pack篇

Tkinter教程之Pack篇#Pack为一布局管理器,可将它视为一个弹性的容器1.一个空的widget#不使用pack# -*- coding: cp936 -*-from Tkinter impo...

[Tkinter 教程01] 入门: Label 控件

本文译自:  http://www.python-course.eu/tkinter_labels.php Hello Tkinter Label 下面我们将以 Tkinter 中最简单的控件...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)