Python之tkinter图形界面设计学习二

图形用户界面(简称GUI),是指采用图形方式显示的计算机操作用户界面。与计算机的命令行界面相比,图形界面对于用户的操作显得更加直观和简便。

一、tkinter模块

tkinter是Python的内置GUI模块。使用tkinter可以快速地创建GUI应用程序,而且IDLE也是用tkinter模块编写而成的。

import tkinter    #导入tkinter模块
win=tkinter.Tk()  #调用tkinter模块中的TK()方法,实例化一个窗口对象
win.geometry("250x130")#窗口对象调用geometry()方法,规划窗口大小
win.title("没有组件的窗体") 调用title()方法,设置窗口名称

win.mainloop()    #进入消息循环

 二、tkinter的常用组件

当主窗体生成后,向窗体里添加组件,这样就可以处理窗体及其内部组件的事件。

例如,使用tkinter向窗体添加“退出”按钮,其程序代码及测试效果如下所示。

import tkinter
win=tkinter.Tk()
win.geometry("300x200")
win.title("带退出按钮的窗体")

#定义一个函数my_quit(),实现按钮的功能
def my_quit():
    win.quit()
    win.destroy()

#退出按钮对象添加
#调用tkinter模块的Button()方法,实例化一个按钮对象
but_quit=tkinter.Button(win,text="退出",command=my_quit,width=10,height=2)
but_quit.pack() #按钮对象调用pack()方法,将这个组件添加到主窗体

win.mainloop()

tkinter布局管理器能控制组件的位置摆放,提供三种布局方法,如下表所示。

 三、tkinter模块的综合应用

在程序设计中,解决复杂问题的最有效方法是“自顶向下”的设计方法和“自底向上”的执行方法。

其基本思想是:首先将一个复杂问题分解为多个小问题,然后只需把处理这些小问题的解决方法组合起来,就可以得到整体的解决方案。

例如,运用Python的tkinter模块,设计的用户登录界面及测试效果如图所示。

1、设计思路

(1)设计基本框架

(2)设计提示标签、输入框和按钮

#设计提示标签 输入框 按钮
#设计两个提示标签
labname=tkinter.Label(win,text='账号',width=80)
labname=tkinter.Label(win,text='账号2',width=80)
labpwd=tkinter.Label(win,text='密码',width=80)
#设计两个输入框
entname=tkinter.Entry(win,width=100,textvariable=var_name)
entpwd=tkinter.Entry(win,width=100,textvariable=var_pwd)
entpwd=tkinter.Entry(win,width=100,show='*'textvariable=var_pwd)
#设计3个按钮
but_ok=tkinter.Button(win,text='登录',command=login)
but_cancel=tkinter.Button(win,text='重置',command=cancel)
but_quit=tkinter.Button(win,text='退出',command=_quit)

(3)设计功能函数

#------功能代码开始-------------
#--设计功能函数----
var_name=tkinter.StringVar()
var_name.set('')
var_pwd=tkinter.StringVar()
var_pwd.set('')

def login():
    name=var_name.get()
    pwd=var_pwd.get()
    if name=='admin' and pwd=='admin123':
        tkinter.messagebox.showinfo(title='用户登录',message='成功')
    else:
        tkinter.messagebox.showinfo(title='用户登录',message='失败!')

def cancel():
    var_name.set('')
    var_pwd.set('')

def _quit():
    win.quit()
    win.destroy()

(4)设计组件布局

#--登录窗口各组件布局--
#组件的窗口布局
labname.place(x=20,y=10,width=80,height=20)
labpwd.place(x=20,y=40,width=80,height=20)
entname.place(x=120,y=10,width=80,height=20)
entpwd.place(x=120,y=40,width=80,height=20)
but_ok.place(x=30,y=80,width=50,height=20)
but_cancel.place(x=100,y=80,width=50,height=20)
but_quit.place(x=170,y=80,width=50,height=20)

(5)完整程序组合

import tkinter    #导入tkinter模块
import tkinter.messagebox
win=tkinter.Tk()  #生成一个主窗体对象
win.geometry("250x130")#窗体大小
win.title("用户登录")

#------功能代码开始-------------
#--设计功能函数----
var_name=tkinter.StringVar()
var_name.set('')
var_pwd=tkinter.StringVar()
var_pwd.set('')

def login():
    name=var_name.get()
    pwd=var_pwd.get()
    if name=='admin' and pwd=='admin123':
        tkinter.messagebox.showinfo(title='用户登录',message='成功')
    else:
        tkinter.messagebox.showinfo(title='用户登录',message='失败!')

def cancel():
    var_name.set('')
    var_pwd.set('')

def _quit():
    win.quit()
    win.destroy()

#设计提示标签 输入框 按钮
#设计两个提示标签
labname=tkinter.Label(win,text='账号',width=80)
labname=tkinter.Label(win,text='账号2',width=80)
labpwd=tkinter.Label(win,text='密码',width=80)
#设计两个输入框
entname=tkinter.Entry(win,width=100,textvariable=var_name)
entpwd=tkinter.Entry(win,width=100,textvariable=var_pwd)
entpwd=tkinter.Entry(win,width=100,show='*'textvariable=var_pwd)
#设计3个按钮
but_ok=tkinter.Button(win,text='登录',command=login)
but_cancel=tkinter.Button(win,text='重置',command=cancel)
but_quit=tkinter.Button(win,text='退出',command=_quit)



#--登录窗口各组件布局--
#组件的窗口布局
labname.place(x=20,y=10,width=80,height=20)
labpwd.place(x=20,y=40,width=80,height=20)
entname.place(x=120,y=10,width=80,height=20)
entpwd.place(x=120,y=40,width=80,height=20)
but_ok.place(x=30,y=80,width=50,height=20)
but_cancel.place(x=100,y=80,width=50,height=20)
but_quit.place(x=170,y=80,width=50,height=20)


win.mainloop()    #进入消息循环

运行结果:

  • 3
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值