首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

第13.3节 图形界面开发tkinter

  • 23-09-22 18:41
  • 4212
  • 5767
blog.csdn.net

一、 引言
老猿最开始是准备就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)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40

老猿Python,跟老猿学Python!
博客地址:http://iyenn.com/index/link?url=https://blog.csdn.net/LaoYuanPython

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

文章知识点与官方知识档案匹配,可进一步学习相关知识
Python入门技能树桌面应用开发Tkinter333596 人正在系统学习中
老猿Python
微信公众号
专注Python相关语言、图像音视频处理、AI
注:本文转载自blog.csdn.net的LaoYuanPython的文章"https://blog.csdn.net/LaoYuanPython/article/details/100516981"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top