Python 에서 실 현 된 간단 한 계산기 기능 에 대한 상세 한 설명
python 을 사용 하여 간단 하고 쉬 운 계산 기 를 만 듭 니 다.
계산기 효과 도
먼저 계산기 의 패 널 을 만 듭 니 다.
계산기 패 널 구조
wx.Frame
에 계승 되 는 frame 을 만 들 고 init 속성 함수 에 패 널 을 만 듭 니 다.
class CalcFrame(wx.Frame):# wx.Frame frame
def __init__(self,title):
wx.Frame.__init__ (self,None,-1,title,
pos=(100,300),size=(300,320))
panel=wx.Panel(self)
boxsize=wx.BoxSizer(wx.VERTICAL)
gridBox=wx.GridSizer(4,4,1,1)
self.equation=""# , print TextCtrl
컴퓨터 디 스 플레이 만 들 기 TextCtrl
self.textprint=wx.TextCtrl(panel,-1,'',style=wx.TE_RIGHT|wx.TE_READONLY)#
self.bgFont=wx.Font(25,wx.SWISS,wx.NORMAL,wx.BOLD,face=u'Roboto')#
self.textprint.SetFont(self.bgFont)# SetFont textprint
self.textprint.SetForegroundColour('black')#
self.textprint.SetBackgroundColour('white')#
버튼
self.buttonData="7 8 9 DEL 4 5 6 AC 1 2 3 * / + - =".split()
# buttonIterm label
# label
buttonLength=len(self.buttonData)
for i in range(buttonLength):
labels="%s" %self.buttonData[i]
buttonIterm = wx.Button(panel,i,labels)
self.createHandler(buttonIterm,labels)
gridBox.Add(buttonIterm,0,flag=wx.EXPAND)
textprint 와 button Iterm 을 box size 에 넣 고 box size 를 panel 에 넣 습 니 다.
boxsize.Add(self.textprint,1,flag=wx.EXPAND)# boxsize , 1
boxsize.Add(gridBox,5,flag=wx.EXPAND)
panel.SetSizerAndFit(boxsize)# boxsize panel
서로 다른 단추 가 촉발 하 는 다른 함 수 를 만 듭 니 다
def createHandler(self,button,labels):
#self.Bind(wx.EVT_BUTTON, self.OnButton1, self.Button1)
# self Frame(wxPython ), Button1 Frame Button,self.OnButton1 。 wxPython :
items="DEL AC ="
if labels not in items:
self.Bind(wx.EVT_BUTTON,self.OnAppend,button)
elif labels=='DEL':
self.Bind(wx.EVT_BUTTON,self.OnDel,button)
elif labels=='AC':
self.Bind(wx.EVT_BUTTON,self.OnAc,button)
elif labels=='=':
self.Bind(wx.EVT_BUTTON,self.OnEqual,button)
서로 다른 함수 의 구체 적 인 집행 과정
def OnAppend(self,event):
eventbutton = event.GetEventObject()
label = eventbutton.GetLabel()
self.equation += label
self.textprint.SetValue(self.equation)
def OnDel(self,event):
self.equation=self.equation[:-1]
self.textprint.SetValue(self.equation)
def OnAc(self,event):
self.textprint.Clear()
self.equation=""
def OnEqual(self,event):
string=self.equation
try:
taget=eval(string)#
self.equation=str(taget)
self.textprint.SetValue(self.equation)
except SyntaxError:#
dlg=wx.MessageDialog(self,u' ',wx.Ok|wx.ICON_INFORMATION)
dlg.ShowModal()
dlg.Destory()
APP 류
class App(wx.App):
def OnInit(self):
self.frame =CalcFrame(u' ')
self.frame.Center()
self.frame.Show()
return True
테스트 코드:
if __name__=="__main__":
app=App()
app.MainLoop()
전체 예제 코드 는 다음 과 같 습 니 다.
# -*- coding:utf-8 -*-
'''
Created on 2018 8 25
@author: Administrator
'''
import wx
class CalcFrame(wx.Frame):# wx.Frame frame
def __init__(self,title):
wx.Frame.__init__ (self,None,-1,title,
pos=(100,300),size=(300,320))
panel=wx.Panel(self)
boxsize=wx.BoxSizer(wx.VERTICAL)
gridBox=wx.GridSizer(4,4,1,1)
self.equation=""# , print TextCtrl
self.textprint=wx.TextCtrl(panel,-1,'',style=wx.TE_RIGHT|wx.TE_READONLY)#
self.bgFont=wx.Font(25,wx.SWISS,wx.NORMAL,wx.BOLD,face=u'Roboto')#
self.textprint.SetFont(self.bgFont)# SetFont textprint
self.textprint.SetForegroundColour('black')#
self.textprint.SetBackgroundColour('white')#
self.buttonData="7 8 9 DEL 4 5 6 AC 1 2 3 * / + - =".split()
# buttonIterm label
# label
buttonLength=len(self.buttonData)
for i in range(buttonLength):
labels="%s" %self.buttonData[i]
buttonIterm = wx.Button(panel,i,labels)
self.createHandler(buttonIterm,labels)
gridBox.Add(buttonIterm,0,flag=wx.EXPAND)
boxsize.Add(self.textprint,1,flag=wx.EXPAND)# boxsize , 1
boxsize.Add(gridBox,5,flag=wx.EXPAND)
panel.SetSizerAndFit(boxsize)# boxsize panel
def createHandler(self,button,labels):
#self.Bind(wx.EVT_BUTTON, self.OnButton1, self.Button1)
# self Frame(wxPython ), Button1 Frame Button,self.OnButton1 。 wxPython :
items="DEL AC ="
if labels not in items:
self.Bind(wx.EVT_BUTTON,self.OnAppend,button)
elif labels=='DEL':
self.Bind(wx.EVT_BUTTON,self.OnDel,button)
elif labels=='AC':
self.Bind(wx.EVT_BUTTON,self.OnAc,button)
elif labels=='=':
self.Bind(wx.EVT_BUTTON,self.OnEqual,button)
def OnAppend(self,event):
eventbutton = event.GetEventObject()
label = eventbutton.GetLabel()
self.equation += label
self.textprint.SetValue(self.equation)
def OnDel(self,event):
self.equation=self.equation[:-1]
self.textprint.SetValue(self.equation)
def OnAc(self,event):
self.textprint.Clear()
self.equation=""
def OnEqual(self,event):
string=self.equation
try:
taget=eval(string)#
self.equation=str(taget)
self.textprint.SetValue(self.equation)
except SyntaxError:#
dlg=wx.MessageDialog(self,u' ',wx.Ok|wx.ICON_INFORMATION)
dlg.ShowModal()
dlg.Destory()
class App(wx.App):
def OnInit(self):
self.frame =CalcFrame(u' ')
self.frame.Center()
self.frame.Show()
return True
if __name__=="__main__":
app=App()
app.MainLoop()
PS:여기 서 여러분 께 몇 가지 계산 도 구 를 추천 하여 참고 하 시기 바 랍 니 다.온라인 일원 함수(방정식)구 해 계산 도구:
http://tools.jb51.net/jisuanqi/equ_jisuanqi
과학 계산기 온라인 사용고급 계산기 온라인 계산:
http://tools.jb51.net/jisuanqi/jsqkexue
온라인 계산기표준 계산기:
http://tools.jb51.net/jisuanqi/jsq
더 많은 파 이 썬 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.
본 논문 에서 말 한 것 이 여러분 의 Python 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.