當前位置:編程學習大全網 - 源碼下載 - 如何用 Python 寫壹個帶 GUI 的科學計算程序

如何用 Python 寫壹個帶 GUI 的科學計算程序

這是個代碼, 使用Tkinter圖形庫,如果妳是用的linux系統 記得將第壹行改為from tkinter import *

這個代碼實現的挺簡單,並不是很復雜的科學計算器界面,妳可以以此為基礎,添加自己想要的東西:給妳個截圖:

代碼是如下, 我就不給妳添註釋了啊:

#!/usr/bin/env?python3.4

from?Tkinter?import?*

import?parser

root?=?Tk()

root.title('Calculator')

i?=?0

def?factorial():

"""Calculates?the?factorial?of?the?number?entered."""

whole_string?=?display.get()

number?=?int(whole_string)

fact?=?1

counter?=?number?

try:

while?counter?>?0:

fact?=?fact*counter

counter?-=?1

clear_all()

display.insert(0,?fact)

except?Exception:

clear_all()

display.insert(0,?"Error")

def?clear_all():

"""clears?all?the?content?in?the?Entry?widget"""

display.delete(0,?END)

def?get_variables(num):

"""Gets?the?user?input?for?operands?and?puts?it?inside?the?entry?widget"""

global?i

display.insert(i,?num)

i?+=?1

def?get_operation(operator):

"""Gets?the?operand?the?user?wants?to?apply?on?the?functions"""

global?i

length?=?len(operator)

display.insert(i,?operator)

i?+=?length

def?undo():

"""removes?the?last?entered?operator/variable?from?entry?widget"""

whole_string?=?display.get()

if?len(whole_string):##?repeats?until

##?now?just?decrement?the?string?by?one?index

new_string?=?whole_string[:-1]

print(new_string)

clear_all()

display.insert(0,?new_string)

else:

clear_all()?

display.insert(0,?"Error,?press?AC")

def?calculate():

"""

Evaluates?the?expression

ref?:?/questions/594266/equation-parsing-in-python

"""

whole_string?=?display.get()

try:

formulae?=?parser.expr(whole_string).compile()

result?=?eval(formulae)

clear_all()

display.insert(0,?result)

except?Exception:

clear_all()

display.insert(0,?"Error!")

root.columnconfigure(0,pad=3)

root.columnconfigure(1,pad=3)

root.columnconfigure(2,pad=3)

root.columnconfigure(3,pad=3)

root.columnconfigure(4,pad=3)

root.rowconfigure(0,pad=3)

root.rowconfigure(1,pad=3)

root.rowconfigure(2,pad=3)

root.rowconfigure(3,pad=3)

display?=?Entry(root,?font?=?("Calibri",?13))

display.grid(row?=?1,?columnspan?=?6,?sticky?=?W+E)

one?=?Button(root,?text?=?"1",?command?=?lambda?:?get_variables(1),?font=("Calibri",?12))

one.grid(row?=?2,?column?=?0)

two?=?Button(root,?text?=?"2",?command?=?lambda?:?get_variables(2),?font=("Calibri",?12))

two.grid(row?=?2,?column?=?1)

three?=?Button(root,?text?=?"3",?command?=?lambda?:?get_variables(3),?font=("Calibri",?12))

three.grid(row?=?2,?column?=?2)

four?=?Button(root,?text?=?"4",?command?=?lambda?:?get_variables(4),?font=("Calibri",?12))

four.grid(row?=?3?,?column?=?0)

five?=?Button(root,?text?=?"5",?command?=?lambda?:?get_variables(5),?font=("Calibri",?12))

five.grid(row?=?3,?column?=?1)

six?=?Button(root,?text?=?"6",?command?=?lambda?:?get_variables(6),?font=("Calibri",?12))

six.grid(row?=?3,?column?=?2)

seven?=?Button(root,?text?=?"7",?command?=?lambda?:?get_variables(7),?font=("Calibri",?12))

seven.grid(row?=?4,?column?=?0)

eight?=?Button(root,?text?=?"8",?command?=?lambda?:?get_variables(8),?font=("Calibri",?12))

eight.grid(row?=?4,?column?=?1)

nine?=?Button(root?,?text?=?"9",?command?=?lambda?:?get_variables(9),?font=("Calibri",?12))

nine.grid(row?=?4,?column?=?2)

cls?=?Button(root,?text?=?"AC",?command?=?clear_all,?font=("Calibri",?12),?foreground?=?"red")

cls.grid(row?=?5,?column?=?0)

zero?=?Button(root,?text?=?"0",?command?=?lambda?:?get_variables(0),?font=("Calibri",?12))

zero.grid(row?=?5,?column?=?1)

result?=?Button(root,?text?=?"=",?command?=?calculate,?font=("Calibri",?12),?foreground?=?"red")

result.grid(row?=?5,?column?=?2)

plus?=?Button(root,?text?=?"+",?command?=?lambda?:?get_operation("+"),?font=("Calibri",?12))

plus.grid(row?=?2,?column?=?3)

minus?=?Button(root,?text?=?"-",?command?=?lambda?:?get_operation("-"),?font=("Calibri",?12))

minus.grid(row?=?3,?column?=?3)

multiply?=?Button(root,text?=?"*",?command?=?lambda?:?get_operation("*"),?font=("Calibri",?12))

multiply.grid(row?=?4,?column?=?3)

divide?=?Button(root,?text?=?"/",?command?=?lambda?:?get_operation("/"),?font=("Calibri",?12))

divide.grid(row?=?5,?column?=?3)

#?adding?new?operations

pi?=?Button(root,?text?=?"pi",?command?=?lambda:?get_operation("*3.14"),?font?=("Calibri",?12))

pi.grid(row?=?2,?column?=?4)

modulo?=?Button(root,?text?=?"%",?command?=?lambda?:?get_operation("%"),?font=("Calibri",?12))

modulo.grid(row?=?3,?column?=?4)

left_bracket?=?Button(root,?text?=?"(",?command?=?lambda:?get_operation("("),?font?=("Calibri",?12))

left_bracket.grid(row?=?4,?column?=?4)

exp?=?Button(root,?text?=?"exp",?command?=?lambda:?get_operation("**"),?font?=?("Calibri",?10))

exp.grid(row?=?5,?column?=?4)

##?To?be?added?:

#?sin,?cos,?log,?ln

undo_button?=?Button(root,?text?=?"<-",?command?=?undo,?font?=("Calibri",?12),?foreground?=?"red")

undo_button.grid(row?=?2,?column?=?5)

fact?=?Button(root,?text?=?"x!",?command?=?factorial,?font=("Calibri",?12))

fact.grid(row?=?3,?column?=?5)

right_bracket?=?Button(root,?text?=?")",?command?=?lambda:?get_operation(")"),?font?=("Calibri",?12))

right_bracket.grid(row?=?4,?column?=?5)

square?=?Button(root,?text?=?"^2",?command?=?lambda:?get_operation("**2"),?font?=?("Calibri",?10))

square.grid(row?=?5,?column?=?5)

root.mainloop()

  • 上一篇:柚子皮源代碼
  • 下一篇:關於大智慧k線
  • copyright 2024編程學習大全網