python使用turtle库绘制时钟,Tkinter实现简易计算器功能【10bet手机官网】
分类:web前端

本文实例介绍了基于python的Tkinter实现简易计算器的详细代码,分享给大家供大家参考,具体内容如下

Python函数库众多,而且在不断更新,所以学习这些函数库最有效的方法,就是阅读Python官方文档。同时借助Google和百度。

闲暇时间用tkinter写了个简易计算器,可实现简单的加减乘除运算,用了Button和Entry2个控件,下面是代码,只是简单的用了偏函数partial,因为那么多button的大部分参数都是一样的,使用偏函数可以简化参数传递,避免同样的参数传递写N次。

第一种:使用python 的 Tkinter实现一个简易计算器

本文介绍的turtle库对应的官方文档地址

# -*- coding: utf-8 -*- 
#author: Cullen 

#import the module 
from Tkinter import * 
import tkFont 
import os 
from functools import partial 
from PIL import Image, ImageTk 

def get_input(entry, argu): 
  entry.insert(END, argu) 

def backspace(entry): 
  input_len = len(entry.get()) 
  entry.delete(input_len - 1) 

def clear(entry): 
  entry.delete(0, END) 

def calc(entry): 
  input = entry.get() 
  output = str(eval(input.strip())) 
  clear(entry) 
  entry.insert(END, output) 

def cal(): 
  root = Tk() 
  root.title("Calc") 
  root.resizable(0,0) 

  entry_font = tkFont.Font(size=12) 
  entry = Entry(root, justify="right", font=entry_font) 
  entry.grid(row=0, column=0, columnspan=4, sticky=N+W+S+E, padx=5, pady=5) 

  button_font = tkFont.Font(size=10, weight=tkFont.BOLD) 
  button_bg = '#D5E0EE' 
  button_active_bg = '#E5E35B' 

  myButton = partial(Button, root, bg=button_bg, padx=10, pady=3, activebackground = button_active_bg) 

  button7 = myButton(text='7', command=lambda : get_input(entry, '7')) 
  button7.grid(row=1, column=0, pady=5) 

  button8 = myButton(text='8', command=lambda : get_input(entry, '8')) 
  button8.grid(row=1, column=1, pady=5) 

  button9 = myButton(text='9', command=lambda : get_input(entry, '9')) 
  button9.grid(row=1, column=2, pady=5) 

  button10 = myButton(text='+', command=lambda : get_input(entry, '+')) 
  button10.grid(row=1, column=3, pady=5) 

  button4 = myButton(text='4', command=lambda : get_input(entry, '4')) 
  button4.grid(row=2, column=0, pady=5) 

  button5 = myButton(text='5', command=lambda : get_input(entry, '5')) 
  button5.grid(row=2, column=1, pady=5) 

  button6 = myButton(text='6', command=lambda : get_input(entry, '6')) 
  button6.grid(row=2, column=2, pady=5) 

  button11 = myButton(text='-', command=lambda : get_input(entry, '-')) 
  button11.grid(row=2, column=3, pady=5) 

  button1 = myButton(text='1', command=lambda : get_input(entry, '1')) 
  button1.grid(row=3, column=0, pady=5) 

  button2 = myButton(text='2', command=lambda : get_input(entry, '2')) 
  button2.grid(row=3, column=1, pady=5) 

  button3 = myButton(text='3', command=lambda : get_input(entry, '3')) 
  button3.grid(row=3, column=2, pady=5) 

  button12 = myButton(text='*', command=lambda : get_input(entry, '*')) 
  button12.grid(row=3, column=3, pady=5) 

  button0 = myButton(text='0', command=lambda : get_input(entry, '0')) 
  button0.grid(row=4, column=0, columnspan=2, padx=3, pady=5, sticky=N+S+E+W) 

  button13 = myButton(text='.', command=lambda : get_input(entry, '.')) 
  button13.grid(row=4, column=2, pady=5) 

  button14 = Button(root, text='/', bg=button_bg, padx=10, pady=3, 
           command=lambda : get_input(entry, '/')) 
  button14.grid(row=4, column=3, pady=5) 

  button15 = Button(root, text='<-', bg=button_bg, padx=10, pady=3, 
           command=lambda : backspace(entry), activebackground = button_active_bg) 
  button15.grid(row=5, column=0, pady=5) 

  button16 = Button(root, text='C', bg=button_bg, padx=10, pady=3, 
           command=lambda : clear(entry), activebackground = button_active_bg) 
  button16.grid(row=5, column=1, pady=5) 

  button17 = Button(root, text='=', bg=button_bg, padx=10, pady=3, 
           command=lambda : calc(entry), activebackground = button_active_bg) 
  button17.grid(row=5, column=2, columnspan=2, padx=3, pady=5, sticky=N+S+E+W) 

  root.mainloop() 

if __name__ == '__main__': 
  cal() 
#coding:utf-8
from Tkinter import *
import time
root = Tk()
def cacl(input_str):
if "x" in input_str:
ret = input_str.split("x")
return int(ret[0]) * int(ret[1])
def callback(n):
print n
def callback1(n):
print n
class App:
def __init__(self, master):
frame1 = Frame(master)
frame1.pack()
frame = Frame(master)
frame.pack()
Button(frame, text="1",command=lambda: callback(1) ).grid(row=0,column=0)
Button(frame, text="2",command=lambda: callback(2) ).grid(row=0,column=1)
Button(frame, text="3",command=lambda: callback(3) ).grid(row=0,column=2)
Button(frame, text="4",command=lambda: callback(4) ).grid(row=1,column=0)
Button(frame, text="5",command=lambda: callback(5) ).grid(row=1,column=1)
Button(frame, text="6",command=lambda: callback(6) ).grid(row=1,column=2)
Button(frame, text="7",command=lambda: callback(7) ).grid(row=2,column=0)
Button(frame, text="8",command=lambda: callback(8) ).grid(row=2,column=1)
Button(frame, text="9",command=lambda: callback(9) ).grid(row=2,column=2)
Button(frame, text="0",command=lambda: callback(0) ).grid(row=3,column=0)
Button(frame, text="+",command=lambda: callback1("+") ).grid(row=3,column=1)
Button(frame, text="-",command=lambda: callback1("-") ).grid(row=3,column=2)
Button(frame, text="*",command=lambda: callback1("*") ).grid(row=4,column=1)
Button(frame, text="/",command=lambda: callback1("/") ).grid(row=4,column=2)
Button(frame, text="=", command=self.say_hi).grid(row=4,column=0)
w = Label(frame1,text="输入结果")
w.pack()
self.e = Entry(frame1)
self.e.pack(padx=5)
w1 = Label(frame1,text="计算结果")
w1.pack()
v = StringVar()
e1 = Entry(frame1, textvariable=v)
v.set("")
self.v = v
e1.pack()
def say_hi(self):
print "hi there, everyone!",self.e.get()
input_str = self.e.get()
self.v.set(cacl(input_str))
app = App(root)
root.mainloop()

绘制动态钟表的基本思路如下(面向对象的编程):

下面是运行结果:

第二种:基于Tkinter用50行Python代码实现简易计算器
 Tkinter一般是python自带的,所以代码不需要其他组件,本程序是在python2.7版本实现的。

使用5个turtle对象
1个turtle:绘制外表盘
3个turtle:模拟表针行为
1个turtle:输出表盘上文字

10bet手机官网 1

 主要涉及了tkinter的使用,函数定义和调用,匿名函数的使用,类成员函数定义等python基础知识,适合新手学习。

根据实时时间使用ontimer()函数更新表盘画面,显示效果如下:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

 代码如下:

相关函数的使用在程序中进行了详细的注释,代码如下:

您可能感兴趣的文章:

  • Python3用tkinter和PIL实现看图工具
  • python使用Tkinter实现在线音乐播放器
  • Python使用Tkinter实现机器人走迷宫
  • python+tkinter编写电脑桌面放大镜程序实例代码
  • Python+tkinter使用80行代码实现一个计算器实例
  • Python tkinter实现的图片移动碰撞动画效果【附源码下载】
  • python3使用tkinter实现ui界面简单实例
  • python3.3使用tkinter开发猜数字游戏示例
  • python使用turtle库绘制时钟
  • Python实现模拟时钟代码推荐
  • Python Tkinter模块实现时钟功能应用示例
from Tkinter import * 
 
#创建横条型框架 
def frame(root, side): 
 w = Frame(root) 
 w.pack(side = side, expand = YES, fill = BOTH) 
 return w 
#创建按钮 
def button(root, side, text, command = None): 
 w = Button(root, text = text, command = command) 
 w.pack(side = side, expand = YES, fill = BOTH) 
 return w 
#继承了Frame类,初始化程序界面的布局 
class Calculator(Frame): 
 def __init__(self): 
   
  Frame.__init__(self) 
   
  self.pack(expand = YES, fill = BOTH) 
  self.master.title('Simple Calculater') 
   
  display = StringVar() 
  #添加输入框 
  Entry(self, relief = SUNKEN, 
    textvariable = display).pack(side = TOP, expand = YES, 
           fill = BOTH) 
  #添加横条型框架以及里面的按钮 
  for key in('123', '456', '789', '-0.'): 
   keyF = frame(self, TOP) 
   for char in key: 
    button(keyF, LEFT, char, lambda w = display, c = char:w.set(w.get() + c)) 
  #添加操作符按钮 
  opsF = frame(self, TOP) 
  for char in '+-*/=': 
   if char == '=': 
    btn = button(opsF, LEFT, char) 
    btn.bind('<ButtonRelease - 1>', lambda e, s = self, w = display:s.calc(w), '+') 
 
   else: 
    btn = button(opsF, LEFT, char, lambda w = display, s = '%s' %char:w.set(w.get() + s)) 
  #添加清除按钮 
  clearF = frame(self, BOTTOM) 
  button(clearF, LEFT, 'clear', lambda w = display:w.set('')) 
 
 #调用eval函数计算表达式的值 
 def calc(self, display): 
  try: 
   display.set(eval(display.get())) 
  except: 
   display.set("ERROR") 
#程序的入口 
if __name__ == '__main__': 
 print('ok') 
 Calculator().mainloop()
# -*- coding: utf-8 -*-
"""
Created on Fri Jan 12 10:43:55 2018

@author: Administrator
"""

from turtle import *
from datetime import *

def skip(step):
  penup()
  forward(step)
  pendown()

def mkhand(name,length):
  #注册turtle形状,建立表针turtle
  reset()
  skip(-length*0.1)
  begin_poly()
  forward(length*1.1)
  end_poly()
  handform=get_poly()
  register_shape(name,handform)

def init():
  global sechand,minhand,hurhand,printer
  mode("logo")
  #重置turtle指向北
  #建立三个表针turtle并初始化
  mkhand("sechand",125)
  mkhand("minhand",130)
  mkhand("hurhand",90)
  sechand=Turtle()
  sechand.shape("sechand")
  minhand=Turtle()
  minhand.shape("minhand")
  hurhand=Turtle()
  hurhand.shape("hurhand")
  for hand in sechand,minhand,hurhand:
    hand.shapesize(1,1,3)
    hand.speed(0)
  #建立输出文字turtle
  printer = Turtle()
  printer.hideturtle()
  printer.penup()

def setupclock(radius):
  #建立表的外框
  reset()
  pensize(7)
  for i in range(60):
    skip(radius)
    if i %5==0:
      forward(20)
      skip(-radius-20)
    else:
      dot(5)
      skip(-radius)
    right(6)

def week(t):
  week=["星期一","星期二","星期三","星期四","星期五","星期六","星期日"]
  return week[t.weekday()]

def date(t):
  y=t.year
  m=t.month
  d=t.day
  return "%s %d %d" %(y,m,d)

def tick():
  #绘制表针的动态显示
  t=datetime.today()
  second=t.second+t.microsecond*0.000001
  minute=t.minute+second/60.0
  hour=t.hour+second/60.0
  sechand.setheading(6*second)
  minhand.setheading(6*minute)
  hurhand.setheading(30*hour)
  tracer(False)
  printer.forward(65)
  printer.write(week(t),align="center",font=("Courier",14,"bold"))
  printer.back(130)
  printer.write(date(t),align="center",font=("Courier",14,"bold"))
  printer.home()
  tracer(True)
  ontimer(tick,100)#100ms后继续调用tick

def main():
  tracer(False)
  init()
  setupclock(160)
  tracer(True)
  tick()
  mainloop()
main()

实现效果如下图:

运行结果

10bet手机官网 2

10bet手机官网 3

以上就是本文的全部内容,希望对大家的学习Python程序设计有所帮助。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

您可能感兴趣的文章:

  • Python3用tkinter和PIL实现看图工具
  • python使用Tkinter实现在线音乐播放器
  • Python Tkinter实现简易计算器功能
  • Python使用Tkinter实现机器人走迷宫
  • python+tkinter编写电脑桌面放大镜程序实例代码
  • Python+tkinter使用80行代码实现一个计算器实例
  • Python tkinter实现的图片移动碰撞动画效果【附源码下载】
  • python3使用tkinter实现ui界面简单实例
  • python3.3使用tkinter开发猜数字游戏示例
  • Python实现模拟时钟代码推荐
  • Python Tkinter模块实现时钟功能应用示例

本文由10bet手机官网发布于web前端,转载请注明出处:python使用turtle库绘制时钟,Tkinter实现简易计算器功能【10bet手机官网】

上一篇:经常被锁定 下一篇:没有了
猜你喜欢
热门排行
精彩图文