zoukankan      html  css  js  c++  java
  • 第13.3节 图形界面开发tkinter

    一、 引言
    老猿最开始是准备就tkinter单独开一个章节,但学了一段时间tkinter,最后放弃了,前一阵子还准备干脆不介绍相关的内容。主要原因有三个,一是tkinter没有界面设计的工具,所有界面布局靠开发人员代码完成,操作很麻烦;二是tkinter模块老猿认为还不成熟,具体来说,老猿遇到了一个问题,这个问题至今没有解决,这个问题老猿并不认为是单一的问题,而是对于复杂的需求tkinter的响应存在异常(具体问题请见《Python tkinter图形界面BUTTON事件控制和编辑框返回值出现异常》);三是有朋友推荐了好用的Python图形开发工具PyQt,虽然老猿至今也就知道了这个词,但给了老猿新的希望。因此老猿放弃了tkinter的学习和详细介绍。
    但老猿还是基于半吊子的学习简单介绍一下tkinter,因为缺少它总感觉基础篇不完整。

    二、 使用tkinter定义主窗口

    1. tkinter是Python图形开发的一个模块,使用前需要导入该模块。如:
      import tkinter as tk

    2. 在开发图形界面时,需要生成一个图形界面主窗口,所有后续组件都基于该主窗口布局。主窗口的生成语句调用tk.TK函数:
      mainwin = tk.Tk()

    3. 主窗口生成后可以调整大小,如将其设置为800*600:
      mainwin.geometry(‘800x600’)

    4. 可以设置窗口标题,如:
      mainwin.title(‘LaoYuanPython tkinter学习’)

    5. 最后执行mainwin.mainloop让窗口活起来可以响应操作。如:
      mainwin.mainloop()

    如果窗口上还需放置其他控件,该语句应该是在所有控件布局后再执行。

    三、 窗口内放置控件

    1. 布局标签
    1. 定义标签,第一个参数为标签要放置到的窗口
      l = tk.Label(mainwin,
      text=‘老猿Python’, # 标签的文字
      bg=‘white’, # 背景颜色
      font=(‘Arial’, 16), # 字体和字体大小
      width=60, height=4 # 标签长宽
      )
    2. 固定标签在窗口的位置
      l.pack()
    1. 布局文本编辑框
      text = tk.Entry(mainwin,show=’*’)
      text.pack()

    2. 布局按钮

    1. 定义按钮响应函数输出文本框输入内容
      def onpressbutton():
      print(“按钮被触动”)
      str=text.get()
      print(“输入内容为:”,str)
    2. 定义和布局按钮
      button = tk.Button(mainwin,text=“OK”,width=15,height=2,command=onpressbutton)
      button.pack()

    定义触发事件时的函数(注意:因为Python的执行顺序是从上往下,所以函数一定要放在按钮定义的上面)

    1. 布局Frame
      Frame 是一个在 Windows 上分离小区域的部件, 它能将 Windows 分成不同的区,然后存放不同的其他部件. 同时一个 Frame 上也能再分成两个 Frame, Frame 可以认为是一种界面容器。
      frm = tk.Frame(mainwin)
      frm.pack()

    对应控件如果要放到对应frame,需要在定义控件时的第一个窗口实例需要使用frame的实例。

    1. 布局菜单
    1. 创建一个菜单栏,这里我们可以把他理解成一个容器,在窗口的上方
      menubar = tk.Menu(mainwin)
      mainwin[‘menu’] = menubar
    2. 定义一个空菜单单元
      filemenu = tk.Menu(menubar, tearoff=0)
    3. 将上面定义的空菜单命名为“文件”,放在菜单栏中,就是装入那个容器中
      menubar.add_cascade(label=‘文件’, menu=filemenu)
    4. 定义菜单响应函数
      def showmenu():
      print(“菜单被点击”)
    5. 在“文件”中加入 “新建”、“打开”、“保存”的小菜单,如果点击这些单元, 就会触发showmenu的功能
      filemenu.add_command(label=‘新建’, command= showmenu)
      filemenu.add_command(label=‘打开’, command= showmenu)
      filemenu.add_command(label=‘保存’, command= showmenu)

    当然tkinter模块远不止老猿现在介绍的这些控件,主程序窗口也还有其他市县方案、事件的处理也比本节介绍的更丰富,但其他内容老猿理解不深甚至没有学习,而网上关于tkinter的材料比较多,老猿在此就不再介绍了。

    四、 本节对应完整源代码

    from tkinter import messagebox as msgbox
    import tkinter as tk
    
    def onpressbutton():
       print("按钮被触动")
       str=text.get()
     
       msgbox.showinfo(message=(f"输入内容为:{str}"))
    
    def showmenu():
        msgbox.showinfo(message=('点击了菜单'))
      
    mainwin = tk.Tk()
    mainwin.geometry('800x600')
    
    mainwin.title('LaoYuanPython tkinter学习')
    l = tk.Label(mainwin, 
        text='老猿Python',    # 标签的文字
        bg='white',     # 背景颜色
        font=('Arial', 16),     # 字体和字体大小
        width=60, height=4  # 标签长宽
        )
    l.pack()
        
    input = tk.StringVar()   
    text =  tk.Entry(mainwin,show='*')
    text.pack()
       
    button = tk.Button(mainwin,text="显示输入内容",width=15,height=2,command=onpressbutton)
    button.pack()
    
    
    menubar = tk.Menu(mainwin)
    mainwin['menu'] = menubar
    filemenu = tk.Menu(menubar, tearoff=0)
    menubar.add_cascade(label='文件', menu=filemenu)   
    filemenu.add_command(label='新建', command= showmenu)
    filemenu.add_command(label='打开', command= showmenu)
    filemenu.add_command(label='保存', command= showmenu)
    
    

    老猿Python,跟老猿学Python!
    博客地址:https://blog.csdn.net/LaoYuanPython

    请大家多多支持,点赞、评论和加关注!谢谢!

  • 相关阅读:
    Python
    版本控制
    后台
    前端
    提升权限 关闭系统
    SC命令(windows服务开启/禁用)
    获取当前电脑全部网络连接名字
    x64 win64编译环境下ADO链接Access数据库的问题解决
    Netsh命令-网络禁用开启
    windows主机防护
  • 原文地址:https://www.cnblogs.com/LaoYuanPython/p/13643591.html
Copyright © 2011-2022 走看看