用python编写一个图形用户接口
大多数程序都是图形用户界面,如何用python编写这样的一个界面呢?Python自带了tkinter 模块,可以创建简单的图形用户界面。那么什么是图形化用户界面?
GUI是图形化用户界面英文的缩写,GUI的英文全称为Graphic User Interface。
1.编写一个窗体
import tkinter as tk
window = tk.Tk()
window.title('窗体')#title() 方法可设置其标题文字
window.geometry('500x300')# 这里的乘号不是 * ,而是小写英文字母 x
l = tk.Label(window,text='这是一行文字',bg = 'Green',font=('黑体',12),width=30,height=2)
l.pack()
window.mainloop()
注意事项:这里的乘号不是 * ,而是小写英文字母 x
运行程序的结果:
2.核心部件
Tkinter中有许多核心部件,下面是一些常用部件的介绍。
2.1按钮(Button)
按钮可以和python中某个函数相关联,点击实现相关功能
下面是调用方法:
b = tk.Button(window,text='hit me')
b.pack()
再将该程序写入
1.编写一个窗体
import tkinter as tk
window = tk.Tk()
window.title('窗体')
window.geometry('500x300')
l = tk.Label(window,text='这是一行文字',bg = 'Green',font=('黑体',12),width=30,height=2)
l.pack()
b = tk.Button(window,text='hit me')
b.pack()
window.mainloop()
运行结果如下:
为了实现点击按钮后就可以修改上面的文字,如何实现这一功能?
2.1.1首先,需要定义变量var
var = tk.StringVar()
var.set("修改这行文字")
这时候,下面这行代码也要修改,需要把var传给text
l = tk.Label(window,text='这是一行文字',bg = 'Green',font=('黑体',12),width=30,height=2)
l.pack()
修改后的代码:
l = tk.Label(window,textvariable=var,bg = 'Green',font=('黑体',12),width=30,height=2)
l.pack()
所有代码如下:
import tkinter as tk
window = tk.Tk()
window.title('窗体')
window.geometry('500x300')
var = tk.StringVar()
var.set("修改这行文字")
l = tk.Label(window,textvariable=var,bg = 'Green',font=('黑体',12),width=30,height=2)
l.pack()
b = tk.Button(window,text='hit me')
b.pack()
window.mainloop()
运行后:
2.1.2然后,定义函数hit_me
这里引入了一个全局变量on_hit,利用on_hit实现函数hit_me的功能
on_hit = False
def hit_me():
global on_hit
if on_hit == False:
on_hit = True
var.set("文字被修改啦!")
else:
on_hit = False
var.set("又被修改了一次")
函数定义好了,接下来需要调用这个函数到Button中,那么,如何调用函数呢?这里采用直接调用函数的方法
command =hit_me
正确调用
command =hit_me()
错误调用
参数表达式为“command=函数名”,注意函数名后面不要加括号,也不能传递参数。
我们在Button后面增加了command =hit_me
b = tk.Button(window,text='hit me',command =hit_me)
b.pack()
现在全部代码如下:
import tkinter as tk
window = tk.Tk()
window.title('窗体')
window.geometry('500x300')
var = tk.StringVar()
var.set("修改这行文字")
on_hit = False
def hit_me():
global on_hit
if on_hit == False:
on_hit = True
var.set("文字被修改啦!")
else:
on_hit = False
var.set("又被修改了一次")
l = tk.Label(window,textvariable=var,bg = 'Green',font=('黑体',12),width=30,height=2)
l.pack()
b = tk.Button(window,text='hit me',font=('黑体',12),width=30,height=1,command = hit_me)
b.pack()
window.mainloop()
运行后界面:
点击后界面:
再次点击后结果:
点击第三次结果:后面会陷入循环
2.2输入框
输入框可以让用户输入内容
e = tk.Entry(window,show=None,font=('黑体',12))
e.pack()
如果想输入密文可以修改:
e = tk.Entry(window,show="*",font=('黑体',12))
e.pack()
全部代码如下:
import tkinter as tk
window = tk.Tk()
window.title('窗体')
window.geometry('500x300')
var = tk.StringVar()
var.set("修改这行文字")
on_hit = False
def hit_me():
global on_hit
if on_hit == False:
on_hit = True
var.set("文字被修改啦!")
else:
on_hit = False
var.set("又被修改了一次")
l = tk.Label(window,textvariable=var,bg = 'Green',font=('黑体',12),width=30,height=2)
l.pack()
b = tk.Button(window,text='hit me',font=('黑体',12),width=30,height=1,command = hit_me)
b.pack()
e = tk.Entry(window,show="*",font=('黑体',12))
e.pack()
window.mainloop()