900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > Python GUI界面编程初步 03 - Tkinter基础设计案例

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

时间:2020-06-25 21:42:58

相关推荐

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

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.

基础的顺序设定代码

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 基础语法 | 菜鸟教程 ()

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。