2018年2月18日星期日

python GUI学习--Tkinter(一)--第一个程序

Tkinter是python自带的GUI库。

教程来源:http://www.tkdocs.com/tutorial

第一个程序:
from tkinter import *
from tkinter import ttk
root = Tk()
ttk.Button(root, text="Hello World").grid()
root.mainloop()

运行结果:
解释说明:
from tkinter import * # 载入tkinter库
from tkinter import ttk # 载入ttk库,一个比较新的库,比较现代化
root = Tk() # 根节点
ttk.Button(root, text="Hello World").grid() # 添加一个按钮,并排列
root.mainloop() # 开启主循环

第一个真实的程序:一个单位转换器
设计:

程序代码:

from tkinter import *
from tkinter import ttk

def calculate(*args):
    try:
        value = float(feet.get())
        meters.set((0.3048 * value * 10000.0 + 0.5)/10000.0)
    except ValueError:
        pass
    
root = Tk()
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))
mainframe.columnconfigure(0, weight=1)
mainframe.rowconfigure(0, weight=1)

feet = StringVar()
meters = StringVar()

feet_entry = ttk.Entry(mainframe, width=7, textvariable=feet)
feet_entry.grid(column=2, row=1, sticky=(W, E))

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()
root.bind('', calculate) # here the '' should be '<Return>'

root.mainloop()

结果:
程序说明:

from tkinter import *
from tkinter import ttk

# 载入tk库,和一个新主题库


root = Tk()
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))
mainframe.columnconfigure(0, weight=1)
mainframe.rowconfigure(0, weight=1)

# 设置根节点,设置标题,frame位置,frame占窗口尺寸定义


feet = StringVar()
meters = StringVar()
feet_entry = ttk.Entry(mainframe, width=7, textvariable=feet) feet_entry.grid(column=2, row=1, sticky=(W, E))
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)

# 定义2个变量,创建 输入框,显示结果的文本框,用于计算的按钮。
# 对每一个元素,需要创建它,然后给出位置。列,行 表示位置,sticky表示伸展(紧靠)方向。


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('', calculate)  ## here the '' should be '<Return>'

# 上面三行:首先为每个main frame中的元素加一层外框。
# 然后设置输入框为默认激活状态
# 最后绑定回车和 计算函数,这样按下回车键就等于按下 计算 按钮




def calculate(*args):
    try:
        value = float(feet.get())
        meters.set((0.3048 * value * 10000.0 + 0.5)/10000.0)
    except ValueError:
        pass

# 计算函数,转换英尺和米,并将结果赋给 meters
# 之前与赋给元素的变量将会自动更新


root.mainloop()


# 开始主循环


2018年1月14日星期日

音频软件OpenMPT

unity中支持Tracker Module,即一些预先处理的音频包,而它可以利用 OpenMPT 这个开源音频软件制作。

另一款自己用的开源音频软件叫做 Audacity。

关于汽车换档

最佳动力性换挡原则

即获得最快加速性能的换档原则:

换档,使得换档之后的功率或者扭矩大于换档前。

功率 P = F*V,假设换档前后速度一致,则F(扭矩)越大,功率越大。

2018年1月13日星期六

关于婴儿睡眠与扁头

知乎上的问题“https://www.zhihu.com/question/27539492”--"把女儿的头睡扁了……",其中有一个回答值得参考:

龚非4 天前
这个我应该有点发言权。。。我闺女出生后,我就坚持让她侧着睡,当然没敢让趴着,是怕窒息。侧着睡是有讲究的,因为婴儿很软,是无法自己侧着睡稳当的。我会用一个小毯子卷成卷,然后放在女儿后背挡着,这样她就能正侧着睡了。另外,最重要的是换边!每天晚上,孩子需要吃奶的时候,我会把孩子抱出来给我老婆喂奶,喂完后我拍咯,拍完放回小床时,一定是换一边睡。这样下次喂奶再换。因此我能保证在前半年,我闺女没有任何两次睡觉是同一侧挨枕头的(白天上班我不在,不过我也交代家里人了,一定要换边)。现在我闺女的脸就非常小,前后奔头都有,梳马尾不管高低,都很好看。希望准父母们参考一下吧。

希望可以给以后的生活积累一些经验,为下一代创造良好,健康的生活。