首页 > 技术文章 > Python-tkinter简单的GUI Demo

shukeshu 2021-07-12 22:36 原文

 

 

 1 #!/usr/bin/python3
 2 # -*- coding:utf -8 -*-
 3 
 4 """
 5 @author:ss
 6 @file:gui.py
 7 @time:2021-07-11 18:46
 8 @desc:
 9 """
10 
11 from tkinter import *
12 import tkinter as tk
13 
14 from oil.oil_station_formula import OilStationFormula
15 
16 master = Tk()
17 master.title("By ss")
18 theLabel = tk.Label(master, text="进入GUI世界,请开始你的表演!\n(建议直接输入正确的数值进行计算,否则会发生意外噢!)")
19 theLabel.pack()
20 
21 frame = Frame(master)
22 frame.pack(padx=100, pady=100)
23 
24 v1 = StringVar()
25 v2 = StringVar()
26 v3 = StringVar()
27 v4 = StringVar()
28 v5 = StringVar()
29 
30 
31 def test(content):
32     """
33     光标失去时,这个函数就会执行
34     :param content:
35     :return:
36     """
37     return content.isdigit()
38 
39 
40 testCMD = master.register(test)  # 需要将函数包装一下,必要的
41 '''
42 
43 开启Entry对输入文本验证功能。
44 1、实现该功能,需要通过设置validate、validatecommand和invalidcommand三个选项。 
45 2、启用验证的开关是validate选项,该选项可以设置以下的值:
46     focus:当entry组件获得或者失去焦点的时候验证 
47     focusin:当entry组件获得焦点的时候验证 
48     focusout:当entry组件失去焦点的时候验证 
49     key:当输入框被编辑的时候验证 
50 
51 
52 # %P表示 当输入框的值允许改变,该值有效。该值为当前文本框内容
53 # %v(小写大写不一样的),当前validate的值
54 # %W表示该组件的名字
55 '''
56 
57 Label(frame, text="油站价").grid(row=0, sticky=E, column=0)
58 e1 = Entry(frame, textvariable=v1, validate="key",  width=6).grid(row=0, column=1)
59 Label(frame, text="平台价").grid(row=0, sticky=E, column=2)
60 e2 = Entry(frame, textvariable=v2, validate="key",  width=6).grid(row=0, column=3)
61 Label(frame, text="输入金额").grid(row=0, sticky=E, column=4)
62 e3 = Entry(frame, textvariable=v3, validate="key", width=7).grid(row=0, column=5)
63 Label(frame, text="优惠券金额").grid(row=0, sticky=E, column=6)
64 e4 = Entry(frame, textvariable=v4, validate="key", width=6).grid(row=0, column=7)
65 Label(frame, text="计算结果").grid(row=1, sticky=E, column=0)
66 e5 = Entry(frame, textvariable=v5, width=25).grid(row=1, column=1,rowspan=7,columnspan=7, sticky=W+E+N+S, padx=5, pady=5)
67 
68 
69 def calc():
70     float(v1.get())
71     float(v2.get())
72     float(v3.get())
73     float(v4.get())
74     o = OilStationFormula(float(v1.get()), float(v2.get()),float(v3.get()), float(v4.get()))
75     o.oil_main()
76     result = o.one_sku_individual_discount_amount()
77 
78     # 清空回显列表可见部分,类似clear命令
79     for i in range(10):
80         v5.set("")
81 
82     v5.set(result)
83 
84 
85 Button(frame, text="马上计算", command=calc).grid(row=9, column=2, pady=5)
86 
87 mainloop()

 

推荐阅读