1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > python如何设计系统界面教程_Python-Tkinter图形化界面设计(详细教程)-Go语言中文社区...

python如何设计系统界面教程_Python-Tkinter图形化界面设计(详细教程)-Go语言中文社区...

时间:2021-08-25 02:31:19

相关推荐

python如何设计系统界面教程_Python-Tkinter图形化界面设计(详细教程)-Go语言中文社区...

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

本文目录

一.图形化界面设计的基本理解

当前流行的计算机桌面应用程序大多数为图形化用户界面(Graphic User Interface,GUI),即通过鼠标对菜单、按钮等图形化元素触发指令,并从标签、对话框等图型化显示容器中获取人机对话信息。

Python自带了tkinter 模块,实质上是一种流行的面向对象的GUI工具包 TK 的Python编程接口,提供了快速便利地创建GUI应用程序的方法。其图像化编程的基本步骤通常包括:

○ 导入 tkinter 模块

○ 创建 GUI 根窗体

○ 添加人机交互控件并编写相应的函数。

○ 在主事件循环中等待用户触发事件响应。

二.窗体控件布局

2.1. 数据集导入

根窗体是图像化应用程序的根控制器,是tkinter的底层控件的实例。当导入tkinter模块后,调用 Tk()方法可初始化一个根窗体实例 root ,用 title() 方法可设置其标题文字,用geometry()方法可以设置窗体的大小(以像素为单位)。将其置于主循环中,除非用户关闭,否则程序始终处于运行状态。执行该程序,一个窗体就呈现出来了。在这个主循环的根窗体中,可持续呈现中的其他可视化控件实例,监测事件的发生并执行相应的处理程序。下面是根窗体呈现示例:

from tkinter import *

root= Tk()

root.title(我的第一个Python窗体)

root.geometry(240x240) # 这里的乘号不是 * ,而是小写英文字母 x

root.mainloop()

2.2. tkinter 常用控件

常用控件:常用的10 多种,如下:

2.2.1 控件的共同属性

在窗体上呈现的可视化控件,通常包括尺寸、颜色、字体、相对位置、浮雕样式、图标样式和悬停光标形状等共同属性。不同的控件由于形状和功能不同,又有其特征属性。在初始化根窗体和根窗体主循环之间,可实例化窗体控件,并设置其属性。父容器可为根窗体或其他容器控件实例。常见的控件共同属性如下表:

标签及常见属性示例:

from tkinter import *

root = Tk()

lb = Label(root,text=我是第一个标签,

bg=#d3fbfb,

fg= ed,

font=(华文新魏,32),

width=20,

height=2,

relief=SUNKEN)

lb.pack()

root.mainloop()

其中,标签实例lb 在父容器root中实例化,具有代码中所示的text(文本)、bg(背景色)、fg(前景色)、font(字体)、width(宽,默认以字符为单位)、height(高,默认以字符为单位)和 relief(浮雕样式)等一系列属性。

在实例化控件时,实例的属性可以“属性=属性值”的形式枚举列出,不区分先后次序。例如:“ text=‘我是第一个标签’ ”显示标签的文本内容,“bg=’#d3fbfb’”设置背景色为十六进制数RGB色 #d3fbfb等等。属性值通常用文本形式表示。

当然如果这个控件实例只需要一次性呈现,也可以不必命名,直接实例化并布局呈现出来,例如:

Label(root,text=我是第一个标签,font=华文新魏).pack()

属性 relief 为控件呈现出来的3D浮雕样式,有 FLAT(平的)、RAISED(凸起的)、SUNKEN(凹陷的)、GROOVE(沟槽状边缘)和 RIDGE(脊状边缘) 5种。

2.3 控件布局

控件的布局通常有pack()、grid() 和 place() 三种方法。

2.3.1 place()方法

根据控件实例在父容器中的绝对或相对位置参数进行布局。其常用布局参数如下:

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=lue,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=lue,font=("黑体",80))

lb.pack()

gettime()

root.mainloop()

○ 3.1.2 文本框(Text)

文本框的常用方法如下:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。