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


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

    一、tkinter模块

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

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

     二、tkinter的常用组件

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

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

    1. import tkinter
    2. win=tkinter.Tk()
    3. win.geometry("300x200")
    4. win.title("带退出按钮的窗体")
    5. #定义一个函数my_quit(),实现按钮的功能
    6. def my_quit():
    7. win.quit()
    8. win.destroy()
    9. #退出按钮对象添加
    10. #调用tkinter模块的Button()方法,实例化一个按钮对象
    11. but_quit=tkinter.Button(win,text="退出",command=my_quit,width=10,height=2)
    12. but_quit.pack() #按钮对象调用pack()方法,将这个组件添加到主窗体
    13. win.mainloop()

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

     三、tkinter模块的综合应用

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

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

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

    1、设计思路

    (1)设计基本框架

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

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

    (3)设计功能函数

    1. #------功能代码开始-------------
    2. #--设计功能函数----
    3. var_name=tkinter.StringVar()
    4. var_name.set('')
    5. var_pwd=tkinter.StringVar()
    6. var_pwd.set('')
    7. def login():
    8. name=var_name.get()
    9. pwd=var_pwd.get()
    10. if name=='admin' and pwd=='admin123':
    11. tkinter.messagebox.showinfo(title='用户登录',message='成功')
    12. else:
    13. tkinter.messagebox.showinfo(title='用户登录',message='失败!')
    14. def cancel():
    15. var_name.set('')
    16. var_pwd.set('')
    17. def _quit():
    18. win.quit()
    19. win.destroy()

    (4)设计组件布局

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

    (5)完整程序组合

    1. import tkinter #导入tkinter模块
    2. import tkinter.messagebox
    3. win=tkinter.Tk() #生成一个主窗体对象
    4. win.geometry("250x130")#窗体大小
    5. win.title("用户登录")
    6. #------功能代码开始-------------
    7. #--设计功能函数----
    8. var_name=tkinter.StringVar()
    9. var_name.set('')
    10. var_pwd=tkinter.StringVar()
    11. var_pwd.set('')
    12. def login():
    13. name=var_name.get()
    14. pwd=var_pwd.get()
    15. if name=='admin' and pwd=='admin123':
    16. tkinter.messagebox.showinfo(title='用户登录',message='成功')
    17. else:
    18. tkinter.messagebox.showinfo(title='用户登录',message='失败!')
    19. def cancel():
    20. var_name.set('')
    21. var_pwd.set('')
    22. def _quit():
    23. win.quit()
    24. win.destroy()
    25. #设计提示标签 输入框 按钮
    26. #设计两个提示标签
    27. labname=tkinter.Label(win,text='账号',width=80)
    28. labname=tkinter.Label(win,text='账号2',width=80)
    29. labpwd=tkinter.Label(win,text='密码',width=80)
    30. #设计两个输入框
    31. entname=tkinter.Entry(win,width=100,textvariable=var_name)
    32. entpwd=tkinter.Entry(win,width=100,textvariable=var_pwd)
    33. entpwd=tkinter.Entry(win,width=100,show='*'textvariable=var_pwd)
    34. #设计3个按钮
    35. but_ok=tkinter.Button(win,text='登录',command=login)
    36. but_cancel=tkinter.Button(win,text='重置',command=cancel)
    37. but_quit=tkinter.Button(win,text='退出',command=_quit)
    38. #--登录窗口各组件布局--
    39. #组件的窗口布局
    40. labname.place(x=20,y=10,width=80,height=20)
    41. labpwd.place(x=20,y=40,width=80,height=20)
    42. entname.place(x=120,y=10,width=80,height=20)
    43. entpwd.place(x=120,y=40,width=80,height=20)
    44. but_ok.place(x=30,y=80,width=50,height=20)
    45. but_cancel.place(x=100,y=80,width=50,height=20)
    46. but_quit.place(x=170,y=80,width=50,height=20)
    47. win.mainloop() #进入消息循环

    运行结果:

  • 相关阅读:
    60%专科生月薪低于5K?测试员:这锅我们不背....
    c#字段和属性的区别
    数据结构:栈和队列
    .Net DI(Dependency Injection)依赖注入机制
    ubuntu安装idea
    流畅的Python(十六)-协程
    Openresty(二十二)ngx.balance和balance_by_lua终结篇
    《解密C语言大小写字母转化:让你的编程之路更加灵活》
    jQuery 简介
    C_C++在linux和windows下文件操作比较总结
  • 原文地址:https://blog.csdn.net/qq_32393893/article/details/128007479