1 设计:

We'll create a simple GUI tool to convert a distance in feet to the equivalent distance in meters. If we were to sketch this out, it might look something like this:

做一个长度的转化小程序UI,公制和英制进行转化。


设计这个,可以划分为三行三列的样子。

The next thing we need to do is look at the layout. The widgets that we've included seem to be naturally divided into a grid with three columns and three rows. In terms of layout, things seem to naturally divide into three columns and three rows, as illustrated below:

The layout of our user interface, which follows a 3 x 3 grid.

Python之禅 by Tim Peters

优美胜于丑陋(Python 以编写优美的代码为目标)

明了胜于晦涩(优美的代码应当是明了的,命名规范,风格相似)

简洁胜于复杂(优美的代码应当是简洁的,不要有复杂的内部实现)

复杂胜于凌乱(如果复杂不可避免,那代码间也不能有难懂的关系,要保持接口简洁)

扁平胜于嵌套(优美的代码应当是扁平的,不能有太多的嵌套)

间隔胜于紧凑(优美的代码有适当的间隔,不要奢望一行代码解决问题)

可读性很重要(优美的代码是可读的)

即便假借特例的实用性之名,也不可违背这些规则(这些规则至高无上)


基础的顺序设定代码

from tkinter import *
from tkinter import ttkdef calculate(*args):try:value = float(feet.get())meters.set(int(0.3048 * value * 10000.0 + 0.5)/10000.0)except ValueError:passroot = Tk() #设置主程序窗口
root.title("Feet to Meters") #设置窗口标题mainframe = ttk.Frame(root, padding="3 3 12 12") #创建一个frame部件,3行3列,12宽
mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
root.columnconfigure(0, weight=1)
root.rowconfigure(0, weight=1)feet = StringVar() #创建一个输入框部件,并放置到屏幕上
feet_entry = ttk.Entry(mainframe, width=7, textvariable=feet) # mainframe 是parent,就是部件要放的地方
feet_entry.grid(column=2, row=1, sticky=(W, E))#放置一个网格,并决定放置位置meters = StringVar()
ttk.Label(mainframe, textvariable=meters).grid(column=2, row=2, sticky=(W, E))ttk.Button(mainframe, text="Calculate", command=calculate).grid(column=3, row=3, sticky=W)ttk.Label(mainframe, text="feet").grid(column=3, row=1, sticky=W)
ttk.Label(mainframe, text="is equivalent to").grid(column=1, row=2, sticky=E)
ttk.Label(mainframe, text="meters").grid(column=3, row=2, sticky=W)for child in mainframe.winfo_children(): child.grid_configure(padx=5, pady=5) #调整版本间隙feet_entry.focus() #焦点放在entry 输入框
root.bind("<Return>", calculate) #回车键开始计算root.mainloop() # 开始事件监听

将Main封装的代码:

from tkinter import *
from tkinter import ttkclass FeetToMeters:def __init__(self, root):root.title("Feet to Meters")mainframe = ttk.Frame(root, padding="3 3 12 12")mainframe.grid(column=0, row=0, sticky=(N, W, E, S))root.columnconfigure(0, weight=1)root.rowconfigure(0, weight=1)self.feet = StringVar()feet_entry = ttk.Entry(mainframe, width=7, textvariable=self.feet)feet_entry.grid(column=2, row=1, sticky=(W, E))self.meters = StringVar()ttk.Label(mainframe, textvariable=self.meters).grid(column=2, row=2, sticky=(W, E))ttk.Button(mainframe, text="Calculate", command=self.calculate).grid(column=3, row=3, sticky=W)ttk.Label(mainframe, text="feet").grid(column=3, row=1, sticky=W)ttk.Label(mainframe, text="is equivalent to").grid(column=1, row=2, sticky=E)ttk.Label(mainframe, text="meters").grid(column=3, row=2, sticky=W)for child in mainframe.winfo_children(): child.grid_configure(padx=5, pady=5)feet_entry.focus()root.bind("<Return>", self.calculate)def calculate(self, *args):try:value = float(self.feet.get())self.meters.set(int(0.3048 * value * 10000.0 + 0.5)/10000.0)except ValueError:passroot = Tk()
FeetToMeters(root)
root.mainloop()


程序说明:

from tkinter import * # 标准绑定到Tk , load Tk lib

from tkinter import ttk # ttk 是tkinter的子模块,执行"themed widgets"


参考:

TkDocs Tutorial - A First (Real) Example

Python 基础语法 | 菜鸟教程 (runoob.com)

(8条消息) Python语言说明_dc90000的博客-CSDN博客

Python GUI界面编程初步 03 - Tkinter基础设计案例相关推荐

  1. Python GUI界面编程初步 02 - Tkinter基础

    前言: 前一篇我们大致介绍了Python编程的几个常用的GUI的工具和库.现在我们开始用其中的几个进行GUI设计. 考虑到,现在有一个项目包括传统的GUI编程,同时客户需要比较完备的图形显示,而这个又 ...

  2. Python GUI界面编程初步 04 - Tkinter设计框架和概念

    前言:本节介绍Tk的基本设计思想 本节参考官方介绍文档,所以英文夹杂,这个大家谅解,主要是方便参考: 此外,我们主要以Python语言为基础 1 Widgets(组件) Widgets are all ...

  3. Python GUI界面编程初步 01 - GUI库的特点和选择

    1 Python 的常用GUI库和特点 Tkinter: Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 .Tk 和 Tkinter 可以在大多数的 Unix ...

  4. Python GUI界面编程初步 05- GUI框架PyQt的运用 - 01 PyQt的详细安装和基本使用

    前言: 在01节里面,我们简单的讨论了一下各个GUI框架的优劣.PyQt作为一个传统的GUI的兼容工具,对拖拽来设计GUI的开发来说是极其方便和简单的. 1 简介: PyQt connects the ...

  5. Python GUI界面编程初步 05- GUI框架PyQt的运用 - 02 PyQt的信号和槽例子

    前言:本节讨论PyQt的事件event和信号signal的应用: 事件和信号是GUI和应用交互的两个重要的概念. 其中,事件用来驱动,信号和槽用来动态链接,这两个东西合并起来适用于各种组合的GUI的触 ...

  6. Python GUI界面编程-初识

    图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面.与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上 ...

  7. python中的gui界面编程_python应用系列教程——python的GUI界面编程Tkinter全解

    全栈工程师开发手册 (作者:栾鹏) python的GUI界面编程,常用的几个python库包含如下: Tkinter: Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包 ...

  8. python应用系列教程——python的GUI界面编程Tkinter全解

    全栈工程师开发手册 (作者:栾鹏) python教程全解 python的GUI界面编程,常用的几个python库包含如下: Tkinter: Tkinter 模块(Tk 接口)是 Python 的标准 ...

  9. Python的GUI界面编程Tkinter全解

    python的GUI界面编程,常用的几个python库包含如下: Tkinter: Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 .Tk 和 Tkinter可 ...

最新文章

  1. ntp 、ntpdate 、chrony 时间同步
  2. php 头部utf8,PHP去掉utf8格式文件中的bom头部_PHP教程
  3. python线下培训-天津python培训,0基础学python线上还是线下好?
  4. Adnroid提高效率之资源文件改名
  5. ajax html页面传参数,jQuery AJAX:如何将大型HTML标记作为参数传递?
  6. css3新增了哪三种边框效果,怎么在CSS3中实现一个边框效果
  7. web_xml 控制web行为
  8. python 获取几小时之前,几分钟前,几天前,几个月前,及几年前的具体时间
  9. java提高篇(四)-----抽象类与接口
  10. Android界面布局基本属性
  11. 【信息论】信源与信源熵(一)
  12. 关系型数据和文档型数据库到底有什么区别?
  13. Porter Stemming
  14. 2、趋势科技2017校招开发岗试题
  15. 为什么Uber微服务架构使用多租户?
  16. 微软联合创始人保罗·艾伦因病离世,享年 65 岁
  17. 模板类h和cpp分开写问题浅析
  18. PMP学习总结一:初步认识PMP
  19. 建站必备SEO工具和网站分析工具
  20. 一个完整系统的测试过程

热门文章

  1. idea中git分支、合并与使用
  2. 【Linux】Aria2 一键安装管理脚本 BT\PT一键安装包
  3. C#LeetCode刷题之#575-分糖果​​​​​​​(Distribute Candies)
  4. 如何在Angular 10中生成QR码
  5. 如何使用COMPUTER VISION将LEPRECHAUN-HATS放入您的网站
  6. ruby 新建对象_Ruby面向对象编程简介
  7. uber-zap_如何构建自己的Uber-for-X应用程序(PART 2)
  8. 精选5个酷毙的Python工具
  9. Pandas知识点-合并操作merge
  10. Python 实现单例模式