Python-Tkinter图形化界面设计(详细教程 ) (2)

根据控件实例在父容器中的绝对或相对位置参数进行布局。其常用布局参数如下:
x,y:控件实例在根窗体中水平和垂直方向上的其实位置(单位为像素)。注意,根窗体左上角为0,0,水平向右,垂直向下为正方向。
relx,rely:控件实例在根窗体中水平和垂直方向上起始布局的相对位置。即相对于根窗体宽和高的比例位置,取值在0.0~1.0之间。
height,width:控件实例本身的高度和宽度(单位为像素)。
relheight,relwidth:控件实例相对于根窗体的高度和宽度比例,取值在0.0~1.0之间。

利用place()方法配合relx,rely和relheight,relwidth参数所得的到的界面可自适应根窗体尺寸的大小。place()方法与grid()方法可以混合使用。如下例子:利用place()方法排列消息(多行标签)。

在这里插入图片描述

from tkinter import * root = Tk() root.geometry(\'320x240\') msg1 = Message(root,text=\'\'\'我的水平起始位置相对窗体 0.2,垂直起始位置为绝对位置 80 像素,我的高度是窗体高度的0.4,宽度是200像素\'\'\',relief=GROOVE) msg1.place(relx=0.2,y=80,relheight=0.4,width=200) root.mainloop() 三、tkinter常见控件的特征属性   3.1、文本输入和输出相关控件

文本的输入与输出控件通常包括:标签(Label)、消息(Message)、输入框(Entry)、文本框(Text)。他们除了前述共同属性外,都具有一些特征属性和功能。

  ○ 3.1.1 标签(Label)和 消息(Message)

除了单行与多行的不同外,属性和用法基本一致,用于呈现文本信息。值得注意的是:属性text通常用于实例在第一次呈现时的固定文本,而如果需要在程序执行后发生变化,则可以使用下列方法之一实现:1、用控件实例的configure()方法来改变属性text的值,可使显示的文本发生变化;2、先定义一个tkinter的内部类型变量var=StringVar() 的值也可以使显示文本发生变化。
看下面的一个例子:制作一个电子时钟,用root的after()方法每隔1秒time模块以获取系统当前时间,并在标签中显示出来。
方法一:利用configure()方法或config()来实现文本变化。

在这里插入图片描述

import tkinter import time def gettime(): timestr = time.strftime("%H:%M:%S") # 获取当前的时间并转化为字符串 lb.configure(text=timestr) # 重新设置标签文本 root.after(1000,gettime) # 每隔1s调用函数 gettime 自身获取时间 root = tkinter.Tk() root.title(\'时钟\') lb = tkinter.Label(root,text=\'\',fg=\'blue\',font=("黑体",80)) lb.pack() gettime() root.mainloop()

方法二:利用textvariable变量属性来实现文本变化

import tkinter import time def gettime(): var.set(time.strftime("%H:%M:%S")) # 获取当前时间 root.after(1000,gettime) # 每隔1s调用函数 gettime 自身获取时间 root = tkinter.Tk() root.title(\'时钟\') var=tkinter.StringVar() lb = tkinter.Label(root,textvariable=var,fg=\'blue\',font=("黑体",80)) lb.pack() gettime() root.mainloop()   ○ 3.1.2 文本框(Text)

文本框的常用方法如下:

在这里插入图片描述


上表位置的取值可为整数,浮点数或END(末尾),例如0.0表示第0列第0行
如下一个例子: 每隔1秒获取一次当前日期的时间,并写入文本框中,如下:本例中调用 datetime.now()获取当前日期时间,用insert()方法每次从文本框txt的尾部(END)开始追加文本。

在这里插入图片描述

from tkinter import * import time import datetime def gettime(): s=str(datetime.datetime.now())+\'\n\' txt.insert(END,s) root.after(1000,gettime) # 每隔1s调用函数 gettime 自身获取时间 root=Tk() root.geometry(\'320x240\') txt=Text(root) txt.pack() gettime() root.mainloop() ○ 3.1.3 输入框(Entry)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgzdxp.html