Codepad系列是将自己用过的一些小功能代码段记录下来,便于后续查找使用,是一个代码备忘录系列。

本文简单记录在用Tkinter开发GUI窗体时一些简单的代码段,以便后续使用。官方文档地址

- Hello world

任务: 创建并打开一个窗体,设置窗体的大小,最简单的代码仅需3行。

  1. from Tkinter import *
  2. root = Tk() #创建窗口对象
  3. root.mainloop() #运行窗口对象

除此之外,针对窗口有许多丰富的操作,详细可以在官网上查询,这里只列出我实际应用过程中用到的。如:

- 设置窗口大小

  1. root.maxsize(80*8,650)
  2. root.minsize(80*8,650)

- 设置固定窗口大小

  1. root.resizable(width=False, height=False)

- 自定义关闭按钮(即窗口页面的‘×’)

  1. # 其中destory_window 为自定义的对应的调用函数,
  2. root.protocol('WM_DELETE_WINDOW', destory_window)
  3. # 如果需要传入参数,则用lambda的方式
  4. root.protocol('WM_DELETE_WINDOW', lambda: destory_window(arg1,arg2))

- 窗口设为置顶

  1. root.wm_attributes('-topmost',1)

- 插入label控件

  1. label_top = Label(root, text=u"标签名称", font=('Arial', 25))
  2. label_top.grid(row=0, column=1, columnspan=1)

- 使用grid对页面布局

  1. button1 = Button(self.root, text='按钮1', command = func1)
  2. button2 = Button(self.root, text='按钮2', command = func2)
  3. button3 = Button(self.root, text='按钮3', command = func3)
  4. button4 = Button(self.root, text='按钮4', command = func4)
  5. button1.grid(row=0,column=0)
  6. button2.grid(row=0,column=2)
  7. button3.grid(row=1,column=1)
  8. button4.grid(row=1,column=3)

- 登录界面

这里以登录窗口为例,包括“用户名”, “密码”, “确认”按钮。

  1. # -*- coding:utf-8 -*-
  2. from Tkinter import *
  3. def check_login(uname,passwd):
  4. print uname
  5. print passwd
  6. root = Tk()
  7. var_user = StringVar()
  8. var_user.set("用户名默认值")
  9. label_user = Label(root, text=u'用户名')
  10. entry_user = Entry(root, textvariable=var_user)
  11. label_user.grid(row=4,column=0)
  12. entry_user.grid(row=4,column=1, columnspan=2)
  13. var_passwd = StringVar()
  14. var_passwd.set("密码默认值")
  15. label_passwd = Label(root, text=u'密码')
  16. entry_passwd = Entry(root, textvariable=var_passwd, show="*")
  17. label_passwd.grid(row=5,column=0)
  18. entry_passwd.grid(row=5,column=1, columnspan=2)
  19. btn_submit = Button(root, text="登录", command = lambda: check_login(var_user.get(),var_passwd.get()))
  20. btn_close = Button(root, text="取消", command = root.destroy)
  21. btn_submit.grid(row=6, column=0)
  22. btn_close.grid(row=6, column=2)
  23. root.mainloop()

这里需要特别注意的有,如果登录窗口是从另一个窗口触发,且需要回到上一级窗口去处理对于的参数时,要将登录窗口由 Tk() 改为 Toplevel(),否则页面修改的参数没法自动刷新。简单的说,如果发现默认值设置没生效,而且确定后没有使用在文本输入的值,就试下把 Tk() 改成 Toplevel() 吧。

- 设置文本框只读

除了上面登录中使用的设置文本框默认值的方法,还有一种方法也可以设置默认值。

  1. note_entry = Entry(root)
  2. note_entry.insert(END, "默认值")
  3. note_entry['state'] = 'readonly'

CodePad系列之-Tkinter窗体的更多相关文章

  1. WPF学习系列 简单的窗体设置

    今天要学习的源码是一个窗体设置.效果如下,可拖拽.这让我想起了vs的启动界面 下面是源码的情况 项目结构: 窗体代码: cs代码 1.新建项目 略 2.设置窗体 AllowsTransparency= ...

  2. C# JackLib系列之Form窗体的ShowWithoutActivation属性及其作用

    代码改变世界! 如果要显示顶级窗口,但又不希望由于将输入焦点从当前窗口移开而中断用户的工作,请使用此属性.它可以是一个信息性弹出窗口或浮动窗口,如“画图”应用程序中的“工具”调色板. 由于此属性为只读 ...

  3. Python tkinter库将matplotlib图表显示在GUI窗口上,并实时更新刷新数据

    代码 1 ''' 2 使用matplotlib创建图表,并显示在tk窗口 3 ''' 4 import matplotlib.pyplot as plt 5 from matplotlib.pylab ...

  4. Python GUI之tkinter窗口视窗教程大集合(看这篇就够了) JAVA日志的前世今生 .NET MVC采用SignalR更新在线用户数 C#多线程编程系列(五)- 使用任务并行库 C#多线程编程系列(三)- 线程同步 C#多线程编程系列(二)- 线程基础 C#多线程编程系列(一)- 简介

    Python GUI之tkinter窗口视窗教程大集合(看这篇就够了) 一.前言 由于本篇文章较长,所以下面给出内容目录方便跳转阅读,当然也可以用博客页面最右侧的文章目录导航栏进行跳转查阅. 一.前言 ...

  5. Dynamics AX 2012 R2 窗体系列 - 在窗体上修改字段时所触发的方法及其顺序

        在这个系列里,Reinhard将和大家一起探索在AX的窗体上执行操作时,都会触发窗体.窗体数据源和表上的哪些方法,并且是以怎样的顺序触发的.     这次,我们来看看在窗体上修改或录入数据的情 ...

  6. ADO.NET学习系列(四)---窗体版的登录小程序

    1.需求分析:做一个登录的小程序,基于Winform的窗体小程序.基本要求:登录成功:弹框显示登录成功,登录失败就弹框显示失败. 扩展功能:登录次数超过3次,就”锁定“用户,提示登录错误次数过多,不能 ...

  7. C#基础系列:开发自己的窗体设计器(PropertyGrid显示中文属性名)

    既然是一个窗体设计器,那就应该能够设置控件的属性,设置属性最好的当然是PropertyGrid了,我们仅仅需要使用一个PropertyGrid.SelectedObject = Control就可以搞 ...

  8. Python3 tkinter基础 TK title 设置窗体的标题

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  9. python3中 tkinter模块创建window窗体、添加按钮、事务处理、创建菜单等的使用

    开始接触桌面图形界面编程,你可以到安装路径  \lib\tkinter 打开__init__.py 文件了解tkinter 1    tkinter 模块创建窗体,代码如下截图: 运行结果,如有右图显 ...

随机推荐

  1. Java的四个标记接口:Serializable、Cloneable、RandomAccess和Remote接口

    一.概述 标记接口是一些没有属性和方法的接口,也是一种设计思想.Java中的一个标记接口表示的的是一种类的特性,实现了该标记接口的类则具有该特性.如实现了Serializable接口的类,表示这个类的 ...

  2. bzoj4700

    题解: cdq分治 先考虑没有人被秒掉的情况 代码: #include<bits/stdc++.h> #define y1 ____y1 ; using namespace std; ty ...

  3. JS中一些常用的兼容写法

    1.滚动条到顶端的距离var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;2.滚动条到左端的距离 ...

  4. 20190219备份 java spring boot 学习链接(日/英)

    Building web applications with Spring Boot and Kotlin https://www.slideshare.net/masuda220/spring-82 ...

  5. php短信验证码接口接入流程及代码示例

    对于绝大部分企业来说,所使用的短信验证码接口都是第三方短信服务商所提供,目前市场上短信服务商有很多,在此向大家推荐一家动力思维乐信,运营13年,值得信赖! 就拿动力思维乐信短信验证码接口为例,详细介绍 ...

  6. Java——总结

    一.编写并运行java程序步骤: 1.编写java源代码 java源代码文件都已java作为扩展名 java代码格式: class 类名{ //主方法} 2.编译,将字符文件编译为字节文件 在dos中 ...

  7. shell脚本学习总结(不断更新中)

    前言:自从大学毕业参加工作以来,接触的开发工作都是在服务端完成,于是接触了比较多的Linux当做开发机使用,或多或少有一些重复性的工作,于是开始琢磨学习一些shell脚本的知识,以便处理这些繁琐的事情 ...

  8. Vue语法学习第一课——插值

    学习关于Vue的插值语法 ① 文本值 : "Mustache"语法,即双大括号 <span>Message:{{msg}}</span> 注:双大括号中的m ...

  9. oraclesql语句笔记

    1. ORA-00947:Not enough values 原因:values没有写足够的值与select()中的字段对应 2.查看一张表中共有多少个字段 select count(*) from ...

  10. 修改VScode行号区的背景颜色

    vs code是相当不错的一个编辑器,现阶段我用来编写nim程序. vs code非常丧心病狂一点就是行号区和编辑区的背景颜色都是一样, 这样会导致要看行首有没有对齐会非常吃力.这个问题让我纠结了非常 ...