本文共 4048 字,大约阅读时间需要 13 分钟。
1、使用tkinter.Tk() 生成主窗口(root=tkinter.Tk());
root.title('标题名') 修改框体的名字,也可在创建时使用className参数来命名;root.resizable(0,0) 框体大小可调性,分别表示x,y方向的可变性;root.mainloop() 保持主窗口一直消息循环中。。
2、tkinter中的核心组件:
1:sticky:默认的控件在窗口中的对齐方式是居中。可以使用sticky选项去指定对齐方式,可以选择的值有:N/S/E/W,分别代表上对齐/下对齐/左对齐/右对齐,可以单独使用N/S/E/W,也可以上下和左右组合使用,达到不同的对齐效果,
总结如下:sticky=N/S/E//W:顶端对齐/底端对齐/右对齐/左对齐
sticky=N+S:拉伸高度,使其在水平方向上顶端和底端都对齐
sticky=E+W,拉伸宽度,使其在垂直方向上左边界和右边界都对齐
sticky=N+S+E:拉伸高度,使其在水平方向上对齐,并将控件放在右边(当两个控件放在同一行同一列时效果明显)
2、pack() pack()有以下几个常用属性:side
padx pady ipadx ipady 1,side side属性有四个可选值:‘top’、‘bottom’、‘left’、‘right’,分别表示将控件位置设在窗口顶部中心、底部中心、左边中心、右边中心。side默认值为’top’。2,padx、pady、ipadx、ipady
这四个属性分别设置控件水平方向外边距、竖直方向外边距、水平方向内边距、竖直方向内边距。**
**
**
import tkinterfrom functools import partial# 按钮输入调用def get_input(entry, argu): # 从entry窗口展示中获取输入的内容 input_ZMX = entry.get() # 出现连续+,则第二个+为无效输入,不做任何处理 if (input_ZMX[-1:] == '+') and (argu == '+'): return # 输入合法将字符插入到entry窗口结尾 entry.insert("end", argu)# 清空entry内容(清空窗口)def clear(entry): entry.delete(0, "end")# 计算def calc(entry): input_ZMX = entry.get() # 计算前判断输入内容是否为空;首字符不能为*/;*/不能连续出现3次; if not input_ZMX: return clear(entry) # 异常捕获,在进行数据运算时如果出现异常进行相应处理 try: # eval() 函数用来执行一个字符串表达式,并返回表达式的值;并将执行结果转换为字符串 output_ZMX = str(eval(input_ZMX)) except Exception: # 将提示信息输出到窗口 entry.insert("end", "Calculation error") else: # 将计算结果显示在窗口中 if len(output_ZMX) > 20: entry.insert("end", "Value overflow") else: entry.insert("end", output_ZMX)if __name__ == '__main__': root = tkinter.Tk() root.title("Calculation")# 框体大小可调性,分别表示x,y方向的可变性; root.resizable(0, 0) button_ZMX = 'orange' math_sign_ZMX = 'DarkTurquoise' cal_output_ZMX = 'YellowGreen' button_active_ZMX = 'Yellow' entry = tkinter.Entry(root, justify="right", font=1) entry.grid(row=0, column=0, columnspan=4, padx=10, pady=10) def place_button(text, func, func_params, bg=button_ZMX , **place_params): # 偏函数partial,可以理解为定义了一个模板,后续的按钮在模板基础上进行修改或添加特性 # activebackground:按钮按下后显示颜place_params色 my_button = partial(tkinter.Button, root, bg=button_ZMX, padx=10, pady=3, activebackground=button_active_ZMX) button = my_button(text=text, bg=bg, command=lambda: func(*func_params)) button.grid(**place_params) # 文本输入类按钮 place_button('7', get_input, (entry, '7'), row=1, column=0, ipadx=5, pady=5) place_button('8', get_input, (entry, '8'), row=1, column=1, ipadx=5, pady=5) place_button('9', get_input, (entry, '9'), row=1, column=2, ipadx=5, pady=5) place_button('4', get_input, (entry, '4'), row=2, column=0, ipadx=5, pady=5) place_button('5', get_input, (entry, '5'), row=2, column=1, ipadx=5, pady=5) place_button('6', get_input, (entry, '6'), row=2, column=2, ipadx=5, pady=5) place_button('1', get_input, (entry, '1'), row=3, column=0, ipadx=5, pady=5) place_button('2', get_input, (entry, '2'), row=3, column=1, ipadx=5, pady=5) place_button('3', get_input, (entry, '3'), row=3, column=2, ipadx=5, pady=5) place_button('0', get_input, (entry, '0'), row=4, column=0, ipadx=8, pady=5, columnspan=2, sticky=tkinter.E + tkinter.W + tkinter.N + tkinter.S) place_button('.', get_input, (entry, '.'),row=4, column=2, ipadx=7, pady=5) # 运算输入类按钮 place_button('*', get_input, (entry, '*'), bg=math_sign_ZMX , row=1, column=3, ipadx=5, pady=5) place_button('-', get_input, (entry, '-'), bg=math_sign_ZMX, row=2, column=3, ipadx=5, pady=5) place_button('+', get_input, (entry, '+'), bg=math_sign_ZMX, row=3, column=3, ipadx=5, pady=5) # 功能输入类按钮(背景色、触发功能不同) place_button('=', calc, (entry,), bg=cal_output_ZMX, row=4, column=3 ,ipadx=5, pady=5) root.mainloop()
转载地址:http://niyg.baihongyu.com/