zoukankan      html  css  js  c++  java
  • 课设-计算器,记事本

    一:java实现计算器

    import java.util.*;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JTextField;
    public class Calc extends JFrame implements ActionListener
    {
        double number = 0.0;
        String operator = "=";
        String str[]={"9","8","7","+","6","5","4","-","3","2","1","*","0",".","1/x","/",
                "sqrt","%","=","CE"};
        boolean isFirstDigit = true;
        JPanel panel=new JPanel();
        JPanel panel2=new JPanel(new BorderLayout());
        JTextField display = new JTextField("0");
        public Calc()
        {
            int digit=0;
            JButton[] buttons = new JButton[str.length];
            this.setSize(300,400);
            this.setLocation(400, 200);
            panel2.add(display);
            panel.setLayout(new GridLayout(5,4));
            for (int i = 0; i < str.length; i++)
            {
                buttons[i] = new JButton(str[i]);
                panel.add(buttons[i]);
            }
            this.getContentPane().setLayout(new BorderLayout());
            this.getContentPane().add("North", panel2);
            this.getContentPane().add("Center", panel);
            this.setVisible(true);
    
            for (int i = 0; i < str.length; i++)
                buttons[i].addActionListener(this);
            display.addActionListener(this);
        }
        public static void main(String[] args)
        {
            Calc bao=new Calc();
        }
        public void actionPerformed(ActionEvent e)
        {
            String target=e.getActionCommand();
            String label = e.getActionCommand();
            if (target.equals("CE"))
                handleReset();
            else if ("0123456789.".indexOf(label) > 0)
                handleNumber(label);
            else
                handleOperator(label);
        }
        private void handleOperator(String key) {
    
            if (operator.equals("+"))
                number += Double.valueOf(display.getText());
            else if (operator.equals("-"))
                number -= Double.valueOf(display.getText());
            else if (operator.equals("*"))
                number *= Double.valueOf(display.getText());
            else if (operator.equals("/"))
                number /= Double.valueOf(display.getText());
            else if (operator.equals("="))
                number = Double.valueOf(display.getText());
            else if(operator.equals("1/x"))
                number=1/Double.valueOf(display.getText());
            else if(operator.equals("sqrt"))
                number=Math.sqrt(Double.valueOf(display.getText()));
            else if(operator.equals("%"))
                number%=Double.valueOf(display.getText());
            display.setText(String.valueOf(number));
            operator = key;
            isFirstDigit = true;
        }
        private void handleNumber(String key) {
            if (isFirstDigit)
                display.setText(key);
            else if ((key.equals(".")) && (display.getText().indexOf(".") < 0))
                display.setText(display.getText() + ".");
            else if (!key.equals("."))
                display.setText(display.getText() + key);
            isFirstDigit = false;
        }
        private void handleReset() {
            display.setText("0");
            isFirstDigit = true;
            operator = "=";
        }
    }
    View Code

     二,java实现记事本

    import java.awt.BorderLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.KeyEvent;
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import javax.swing.JCheckBoxMenuItem;
    import javax.swing.JFileChooser;
    import javax.swing.JFrame;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
    import javax.swing.JOptionPane;
    import javax.swing.JScrollPane;
    import javax.swing.JTextArea;
    import javax.swing.JTextPane;
    import javax.swing.KeyStroke;
    import javax.swing.WindowConstants;
    
    public class NoteClass extends JFrame {
    
        private static final long serialVersionUID = 7733222986650734523L;
        JMenuBar jmb = new JMenuBar();
        // 创建子菜单
        JMenu jm1 = new JMenu("文件");
        JMenu jm2 = new JMenu("编辑");
        JMenu jm3 = new JMenu("格式");
        JMenu jm5 = new JMenu("帮助");
        // 创建菜单项(文件)
        JMenuItem jme1 = new JMenuItem("新建");
        JMenuItem jme2 = new JMenuItem("打开");
        JMenuItem jme3 = new JMenuItem("保存");
        JMenuItem jme4 = new JMenuItem("另存为...");
        JMenuItem jme5 = new JMenuItem("退出");
        // 创建菜单项(编辑)
        JMenuItem jme6 = new JMenuItem("全选");
        JMenuItem jme7 = new JMenuItem("剪切");
        JMenuItem jme8 = new JMenuItem("复制");
        JMenuItem jme9 = new JMenuItem("粘贴");
        JMenuItem jme10 = new JMenuItem("删除");
        // 创建菜单项(格式)
        JCheckBoxMenuItem jme11 = new JCheckBoxMenuItem("自动换行", false);
        // 创建菜单项(帮助)
        JMenuItem jme14 = new JMenuItem("查看帮助");
        JMenuItem jme15 = new JMenuItem("关于记事本");
        // 实例化文本域
        JTextArea jtext = new JTextArea();
        JTextPane pane = new JTextPane();// 文本窗格
        JScrollPane jscroll = new JScrollPane(jtext);
        JTextPane jtshow = new JTextPane();
    
        public NoteClass() {
            setTitle("记事本");
            setSize(500, 460);
            setLocationRelativeTo(null);
            pane.setLayout(new BorderLayout());
            // 设置快捷键
            jme1.setMnemonic('N');
            jme1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, KeyEvent.CTRL_MASK));
            jme2.setMnemonic('O');
            jme2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, KeyEvent.CTRL_MASK));
            jme3.setMnemonic('S');
            jme3.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, KeyEvent.CTRL_MASK));
            jme6.setMnemonic('A');
            jme6.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, KeyEvent.CTRL_MASK));
            jme7.setMnemonic('X');
            jme7.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, KeyEvent.CTRL_MASK));
            jme8.setMnemonic('C');
            jme8.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, KeyEvent.CTRL_MASK));
            jme9.setMnemonic('V');
            jme9.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, KeyEvent.CTRL_MASK));
            jme10.setMnemonic('L');
            jme10.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_L, KeyEvent.CTRL_MASK));
            // 添加菜单项到子菜单(文件)
            jm1.add(jme1);
            jm1.addSeparator();
            jm1.add(jme2);
            jm1.addSeparator();
            jm1.add(jme3);
            jm1.addSeparator();
            jm1.add(jme4);
            jm1.addSeparator();
            jm1.add(jme5);
            jmb.add(jm1);
            // 添加菜单项到子菜单(编辑)
            jm2.add(jme6);
            jm2.addSeparator();
            jm2.add(jme7);
            jm2.addSeparator();
            jm2.add(jme8);
            jm2.addSeparator();
            jm2.add(jme9);
            jm2.addSeparator();
            jm2.add(jme10);
            jmb.add(jm2);
            // 添加菜单项到子菜单(格式)
            // 设置快捷键
            jme11.setMnemonic('w');
            jme11.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_W, KeyEvent.CTRL_MASK));
            jm3.add(jme11);
            jmb.add(jm3);
            // 添加菜单项到子菜单(帮助)
            jm5.add(jme14);
            jm5.addSeparator();
            jm5.add(jme15);
            jmb.add(jm5);
            // 将菜单栏添加到窗体顶部
            setJMenuBar(jmb);
            // container.add(jmb,BorderLayout.NORTH);
            // 添加文本域
            pane.add(jscroll, BorderLayout.CENTER);
            add(pane);
            // **************************添加事件监听器(全选部分)*******************************
            jme6.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    jtext.selectAll();// 全选
                }
            });
            // **************************添加事件监听器(剪切部分)*******************************
            jme7.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    jtext.cut();// 剪切
                }
            });
            // **************************添加事件监听器(复制部分)*******************************
            jme8.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    jtext.copy();// 复制
                }
            });
            // **************************添加事件监听器(粘贴部分)*******************************
            jme9.addActionListener(new ActionListener() {
    
                @Override
                public void actionPerformed(ActionEvent e) {
                    jtext.paste();// 粘贴
                }
            });
            // **************************添加事件监听器(删除部分)*******************************
            jme10.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    jtext.replaceSelection(null);// 删除
                }
            });
            // **************************添加事件监听器(新建部分)********************************
            jme1.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    if (jtext.getText().equals("")) {
                        jtext.setText("");
                    } else {
                        int result = JOptionPane.showConfirmDialog(NoteClass.this, "是否将更改保存到无标题?", "记事本",
                                JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
                        if (result == 0) {
                            save();
                        }
                    }
                }
            });
            // **************************添加事件监听器(打开部分)********************************
            jme2.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    JFileChooser choose = new JFileChooser();
                    choose.setDialogTitle("打开");
                    File file;
                    int result = choose.showOpenDialog(NoteClass.this);
                    if (result == JFileChooser.APPROVE_OPTION) {
                        try { // 获取当前选择的文件
                            // 创建文件输出流
                            file = choose.getSelectedFile();
                            BufferedReader br = new BufferedReader(new FileReader(file));
                            String str = null;
                            while ((str = br.readLine()) != null) {
                                jtext.append(str + "
    ");
                            }
                            // 设置记事本标题
                            setTitle(file.getName() + "  记事本");
                            br.close();
                        } catch (Exception ee) {
                            ee.printStackTrace();
                        }
                    }
                }
            });
            // **************************添加事件监听器(保存部分)********************************
            jme3.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    if (jtext.getText() != null && !jtext.getText().equals("")) {
                        save();
                    }
                }
            });
            // **************************添加事件监听器(另存为部分)********************************
            jme4.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    if (jtext.getText() != null && !jtext.getText().equals("")) {
                        save();
                    }
                }
            });
            // **************************添加事件监听器(退出部分)********************************
            jme5.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    if (jtext.getText().equals("")) {
                        NoteClass.this.dispose();
                    } else {
                        int result = JOptionPane.showConfirmDialog(NoteClass.this, "是否将更改保存到无标题?", "记事本",
                                JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
                        if (result == 0) {
                            if (jtext.getText() != null && !jtext.getText().equals("")) {
                                save();
                            }
                        } else if (result == 1) {
                            NoteClass.this.dispose();
                        }
                    }
                }
            });
            // **************************添加事件监听器(自动换行部分)********************************
            jme11.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    if (jme11.isSelected()) {
                        jtext.setLineWrap(true);
                    } else {
                        jtext.setLineWrap(false);
                    }
                }
            });
            // **************************添加事件监听器(查看帮助部分)***********************************
            jme14.addActionListener(new ActionListener() {
    
                @Override
                public void actionPerformed(ActionEvent e) {
    
                    JOptionPane.showMessageDialog(NoteClass.this, "输入文字即可!");
                }
            });
            // **************************添加事件监听器(关于记事本部分)***********************************
            jme15.addActionListener(new ActionListener() {
    
                @Override
                public void actionPerformed(ActionEvent e) {
    
                    JOptionPane.showMessageDialog(NoteClass.this, "版本:Windows旗舰版");
                }
            });
    
            // 设置窗体关闭
            if (jtext.getText().equals("")) {
                setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    
            } else if (jtext.getText() != null) {
                int result = JOptionPane.showConfirmDialog(NoteClass.this, "是否将更改保存到无标题?", "记事本",
                        JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
                if (result == 0) {
                } else if (result == 1) {
                    setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
                }
            }
            // 设置窗体是否可见
            setVisible(true);
        }
    
        public void save() {
            JFileChooser choose = new JFileChooser();
            int result = choose.showSaveDialog(NoteClass.this);// NotePad.this父容器
            if (result == JFileChooser.APPROVE_OPTION) {
                File file;
                try {
                    file = choose.getSelectedFile();
                    BufferedWriter bw = new BufferedWriter(new FileWriter(file));
                    bw.write(jtext.getText());
                    bw.close();
                } catch (IOException e1) {
                    e1.printStackTrace();
                }
            }
    
        }
    
        public static void main(String[] args) {
            new NoteClass();
        }
    }
    View Code

     三,python实现计算器V1

    from tkinter import*
    s=""
    def baoyuchen(event):
        global label;
        global reset;
        global s;
        num=event.widget['text']#获得按钮的值
        if num in "=":
            label['text']=str(eval(label['text']))
            s=str(eval(label['text']))
            return
        else:
            label['text']=s+num
            s+=num
        if num=='C':
            label['text']="0"
            s=""
            return  
    #主窗口
    root=Tk()
    root.title("calc")
    #显示窗口
    label=Label(root,text="0",background="white",anchor="e")
    label['width']=40
    label['height']=3
    label.grid(row=0,columnspan=4,sticky=W)
    #按钮
    show="789/456*123-0.C+()%="
    for i in range(5):
        for j in range(4):
            b=Button(root,text=show[i*4+j],width=8)
            b.grid(row=i+1,column=j)
            b.bind("<Button-1>",baoyuchen)
    root.mainloop()  
    View Code

     四,python实现计算器V2

    from tkinter import *
    from math import *
    root = Tk() 
    root.title("计算器") 
    root.geometry("1200x260+0+0") 
       
       
    def come(event): 
      event.widget["background"]= "orange"#event的widget方法,恩,恩,值得看看 
    def go(event): 
      event.widget["background"] = "#%02x%02x%02x" % (240,240,240)#实现RGB和十六进制的换算 
    def num1(): 
      text.insert(END,1) 
    def num2(): 
      text.insert(END,2) 
    def num3(): 
      text.insert(END,3) 
    def num4(): 
      text.insert(END,4) 
    def num5(): 
      text.insert(END,5) 
    def num6(): 
      text.insert(END,6) 
    def num7(): 
      text.insert(END,7) 
    def num8(): 
      text.insert(END,8) 
    def num9(): 
      text.insert(END,9) 
    def num0(): 
      if text.get(END) =="/": 
        messagebox.showinfo(title ="除数不能为零") 
      else: 
        text.insert(END,0) 
    def dot_it(): 
      text.insert(END,".") 
         
    def Addnum(): 
      if text.get(1.0,END): 
        text.insert(END,"+") 
    def minus_num(): 
      if text.get(1.0,END): 
        text.insert(END,"-") 
    def times_num(): 
      if text.get(1.0,END): 
        text.insert(END,"*") 
    def div_num(): 
      if text.get(1.0,END): 
        text.insert(END,"/") 
         
    def equal_it():#可以使用text的search方法排除除法和开根号的例外 
      global list_power,x,list_log,xylog 
      se = text.get(1.0,END) 
      if se: 
        if "/" in text.get(1.0,END): 
          div_pos = text.search("/",1.0,END) 
          pos = div_pos.split(".") 
          text_row = pos[0] 
          text_column = pos[1] 
          newpos = "%d.%d" % (int(text_row),int(text_column)+1) 
          cool = eval(text.get(newpos,END)) 
          if cool == 0: 
            text_alert.insert(1.0,"被除数不能为零") 
            return
          else: 
            se = eval(se) 
            text.delete(1.0,END) 
            text.insert(1.0,se) 
        elif xypower==True:#通过设全局变量为哨兵,看函数是否被调用 
          list_power.append(eval(se)) 
          text.delete(1.0,END) 
          text.insert(1.0,pow(list_power[0],list_power[1])) 
          list_power = [] 
        elif xylog ==True: 
          list_log.append(eval(se)) 
          text.delete(1.0,END) 
          text.insert(1.0,log(list_log[1],list_log[0])) 
          list_log = [] 
             
             
        else: 
          se = eval(se) 
          text.delete(1.0,END) 
          text.insert(1.0,se) 
      else: 
        text.delete(1.0,END) 
    def negative(): 
      text.insert(END,"-") 
    def Square_root(): 
      if eval(text.get(1.0,END))>=0: 
        rootit =sqrt(eval(text.get(1.0,END))) 
        text.delete(1.0,END) 
        text.insert(1.0,rootit) 
    def Per(): 
      if text.get(1.0,END): 
        num = eval(text.get(1.0,END)) 
        text.insert(END,"%") 
        newnum = num*0.01
        text.delete(1.0,END) 
        text.insert(1.0,newnum) 
       
    def Reci_num(): 
      #text.get(1.0,"%s-2c" % END).strip("
    ") 
      #if text.get(1.0,"%s-1c" % END).isdigit(): 
        # if type(aa)==type(bb) 可以用来判断数据类型 
        # if type(aa)==type(1) 
        #if type(aa)==type("我") 
        #if type(aa)==type(3.14) 
      if eval(text.get(1.0,END))!=0: 
        num = eval(text.get(1.0,END).strip("
    ")) 
        num = 1/num 
        text.delete(1.0,END) 
        text.insert(1.0,num) 
      else: 
          text_alert.insert(1.0,"零不能求倒数") 
         
    def C(): 
      global memorylist,list_power,list_log# global的用法 
      text.delete(1.0,END) 
      text_alert.delete(1.0,END) 
      memorylist = [] 
      list_power = [] 
      list_log =[] 
         
    def CE(): 
      text.delete(1.0,END) 
      text_alert.delete(1.0,END) 
    def delete_onechar(): 
      text.delete("%s-1c" % INSERT,INSERT)#字符index的移动 
    def Mc(): 
      global memorylist 
      memorylist = [] 
    def Ms(): 
      global memorylist 
      memorylist.append(eval(text.get(1.0,END))) 
      text.delete(1.0,END) 
    def M_plus(): 
      global memorylist 
      global m_plus 
      m_plus = True
      memorylist.append(eval(text.get(1.0,END))) 
      text.delete(1.0,END) 
      return True
    def M_minus(): 
      global memorylist 
      global m_minus 
      m_minus =True
      memorylist.append(eval(text.get(1.0,END))) 
      text.delete(1.0,END) 
      return True
    def Mr(): 
      global memorylist 
      global m_plus 
      global m_minus 
      text.delete(1.0,END) 
      if m_plus == True: 
        sum1 =0
        for i in range(len(memorylist)): 
          sum1 = sum1 + memorylist[i] 
        memorylist =[] 
        memorylist.append(sum1) 
        text.insert(1.0,sum1) 
      elif m_minus == True: 
        difference = 0
        for i in range(len(memorylist)): 
          difference = memorylist[i]-difference 
        difference = - difference 
        memorylist.append(difference) 
        text.insert(1.0,difference) 
    def angle_radio(): 
      text.delete(1.0,END) 
      global angle_is 
      angle_is =True
           
    def radium_radio(): 
      text.delete(1.0,END) 
      global radium_is 
      radium_is =True
    def angle_choice(): 
      global x 
      if angle_is == True: 
        x = pi*eval(text.get(1.0,END))/180
      if radium_is == True: 
        x = eval(text.get(1.0,END)) 
    def circle_ratio(): 
      text.insert(END,pi) 
    def sin_x(): 
      global x 
      angle_choice() 
      text.delete(1.0,END) 
      text.insert(1.0,sin(x)) 
         
    def cos_x(): 
      global x 
      angle_choice() 
      text.delete(1.0,END) 
      text.insert(1.0,cos(x)) 
         
    def tan_x(): 
      angle_choice() 
      if x == 90 or x == pi/2: 
        text_alert.insert(1.0,"正切角度不能为90度或π/2弧度") 
        return
      else: 
        text.delete(1.0,END) 
        text.insert(1.0,tan(x)) 
         
    def square_it(): 
      temp = eval(text.get(1.0,END)) 
      text.delete(1.0,END) 
      text.insert(1.0,pow(temp,2)) 
    def x_ypower(): 
      global list_power,x,xypower 
      xypower =True
      x = eval(text.get(1.0,END)) 
      list_power.append(x) 
      text.delete(1.0,END) 
    def tri_power(): 
      temp = eval(text.get(1.0,END)) 
      text.delete(1.0,END) 
      text.insert(1.0,pow(temp,3)) 
    def Bracket_left(): 
      text.insert(END,"(") 
    def Bracket_right(): 
      text.insert(END,")") 
    def nature_log(): 
      temp = eval(text.get(1.0,END)) 
      text.delete(1.0,END) 
      text.insert(1.0,log1p(temp)) 
    def deci_log(): 
      temp = eval(text.get(1.0,END)) 
      text.delete(1.0,END) 
      text.insert(1.0,log10(temp)) 
    def bina_log(): 
      temp = eval(text.get(1.0,END)) 
      text.delete(1.0,END) 
      text.insert(1.0,log2(temp)) 
    def y_based_on_x_log(): 
      global list_log,x,xylog 
      xylog =True
      x = eval(text.get(1.0,END)) 
      list_log.append(x) 
      text.delete(1.0,END) 
    def natur_const(): 
      text.insert(END,e) 
    def anti_sin(): 
      temp = eval(text.get(1.0,END)) 
      text.delete(1.0,END) 
      text.insert(1.0,asin(temp)*180/pi) 
    def anti_cos(): 
      temp = eval(text.get(1.0,END)) 
      text.delete(1.0,END) 
      text.insert(1.0,acos(temp)*180/pi) 
    def anti_tan(): 
      temp = eval(text.get(1.0,END)) 
      text.delete(1.0,END) 
      text.insert(1.0,atan(temp)*180/pi) 
    def sqrt_num(): 
      temp = eval(text.get(1.0,END)) 
      text.delete(1.0,END) 
      text.insert(1.0,sqrt(temp)) 
    def tri_root(): 
      temp = eval(text.get(1.0,END)) 
      text.delete(1.0,END) 
      text.insert(1.0,pow(temp,1/3)) 
         
    def standard(): 
      MC = Button(root,text ="MC",width =10,command = Mc) 
      MC.bind("<Enter>",come) 
      MC.bind("<Leave>",go) 
      MC.grid(row=2,column =0,sticky =W,padx =1) 
      MR = Button(root,text ="MR",width =10,command = Mr) 
      MR.grid(row=2,column =1,stick = W,padx =1) 
      MR.bind("<Enter>",come) 
      MR.bind("<Leave>",go) 
      MS = Button(root,text ="MS",width =10,command =Ms) 
      MS.grid(row=2,column =2,sticky =W,padx =1) 
      MS.bind("<Enter>",come) 
      MS.bind("<Leave>",go) 
      M_ADD = Button(root,text ="M+",width =10,command =M_plus) 
      M_ADD.grid(row=2,column =3,sticky =W,padx =1) 
      M_ADD.bind("<Enter>",come) 
      M_ADD.bind("<Leave>",go) 
      M_ADD.bind("<>") 
      M_Minus = Button(root,text ="M-",width =10,command =M_minus) 
      M_Minus.grid(row=2,column =4,sticky =W,padx =1) 
      M_Minus.bind("<Enter>",come) 
      M_Minus.bind("<Leave>",go) 
       
      DEL = Button(root,text ="",width =10,command =delete_onechar) 
      DEL.grid(row=3,column =0,sticky =W,padx =1) 
      DEL.bind("<Enter>",come) 
      DEL.bind("<Leave>",go) 
      CEbtn = Button(root,text ="CE",width =10,command =CE) 
      CEbtn.grid(row=3,column =1,sticky =W,padx =1) 
      CEbtn.bind("<Enter>",come) 
      CEbtn.bind("<Leave>",go) 
      Cbtn = Button(root,text ="C",width =10,command =C) 
      Cbtn.grid(row=3,column =2,sticky =W,padx =1) 
      Cbtn.bind("<Enter>",come) 
      Cbtn.bind("<Leave>",go) 
      negativ = Button(root,text ="负号 - ",width =10,command = negative) 
      negativ.grid(row=3,column =3,sticky =W,padx =1) 
      negativ.bind("<Enter>",come) 
      negativ.bind("<Leave>",go) 
      sqr_root = Button(root,text ="平方根√",width =10,command =Square_root ) 
      sqr_root.grid(row =3,column =4,sticky =W,padx =1) 
      sqr_root.bind("<Enter>",come) 
      sqr_root.bind("<Leave>",go) 
       
       
      btn7 = Button(root,text =7,width =10,command = num7) 
      btn7.grid(row=4,column =0,sticky =W,padx =1) 
      btn7.bind("<Enter>",come) 
      btn7.bind("<Leave>",go) 
      btn8 = Button(root,text =8,width =10,command = num8) 
      btn8.grid(row=4,column =1,sticky =W,padx =1) 
      btn8.bind("<Enter>",come) 
      btn8.bind("<Leave>",go) 
      btn9 = Button(root,text =9,width =10,command = num9) 
      btn9.grid(row=4,column =2,sticky =W,padx =1) 
      btn9.bind("<Enter>",come) 
      btn9.bind("<Leave>",go) 
      div = Button(root,text ="除法 /",width =10,command = div_num) 
      div.grid(row=4,column =3,sticky =W,padx =1) 
      div.bind("<Enter>",come) 
      div.bind("<Leave>",go) 
      per = Button(root,text ="百分之 %",width =10,command =Per) 
      per.grid(row=4,column =4,sticky =W,padx =1) 
      per.bind("<Enter>",come) 
      per.bind("<Leave>",go) 
       
      btn4 = Button(root,text =4,width =10,command = num4) 
      btn4.grid(row=5,column =0,sticky =W,padx =1) 
      btn4.bind("<Enter>",come) 
      btn4.bind("<Leave>",go) 
      btn5 = Button(root,text =5,width =10,command = num5) 
      btn5.grid(row=5,column =1,sticky =W,padx =1) 
      btn5.bind("<Enter>",come) 
      btn5.bind("<Leave>",go) 
      btn6 = Button(root,text =6,width =10,command = num6) 
      btn6.grid(row=5,column =2,sticky =W,padx =1) 
      btn6.bind("<Enter>",come) 
      btn6.bind("<Leave>",go) 
      times = Button(root,text ="乘法 ×",width =10,command = times_num) 
      times.grid(row=5,column =3,sticky =W,padx =1) 
      times.bind("<Enter>",come) 
      times.bind("<Leave>",go) 
      reciprocal = Button(root,text ="倒数 1/x",width =10,command =Reci_num) 
      reciprocal.grid(row=5,column =4,sticky =W,padx =1) 
      reciprocal.bind("<Enter>",come) 
      reciprocal.bind("<Leave>",go) 
       
       
      btn1 = Button(root,text =1,width =10,command = num1) 
      btn1.grid(row=6,column =0,sticky =W,padx =1) 
      btn1.bind("<Enter>",come) 
      btn1.bind("<Leave>",go) 
      btn2 = Button(root,text =2,width =10,command = num2) 
      btn2.grid(row=6,column =1,sticky =W,padx =1) 
      btn2.bind("<Enter>",come) 
      btn2.bind("<Leave>",go) 
      btn3 = Button(root,text =3,width =10,command = num3) 
      btn3.grid(row=6,column =2,sticky =W,padx =1) 
      btn3.bind("<Enter>",come) 
      btn3.bind("<Leave>",go) 
      minus = Button(root,text ="减 - ",width =10,command =minus_num ) 
      minus.grid(row=6,column =3,sticky =W,padx =1) 
      minus.bind("<Enter>",come) 
      minus.bind("<Leave>",go) 
      equal = Button(root,text ="=",width =10,height =3,command = equal_it) 
      equal.grid(row=6,column =4,sticky =W,padx =1,rowspan =2) 
      equal.bind("<Enter>",come) 
      equal.bind("<Leave>",go) 
       
      btn0 = Button(root,text =0,width =22,height =1,command = num0) 
      btn0.grid(row=7,column =0,sticky =W,padx =1,columnspan =2) 
      btn0.bind("<Enter>",come) 
      btn0.bind("<Leave>",go) 
      dot = Button(root,text =".",width =7,font =("Times","14"),height =1,command =dot_it) 
      dot.grid(row=7,column =2,sticky =W,padx =1) 
      dot.bind("<Enter>",come) 
      dot.bind("<Leave>",go) 
      add = Button(root,text ="加 +",width =10,command = Addnum) 
      add.grid(row=7,column =3,sticky =W,padx =1) 
      add.bind("<Enter>",come) 
      add.bind("<Leave>",go) 
       
    def sci(): 
      v =IntVar() 
      angle = Radiobutton(root,text = "角度",variable =v,value =1,command =angle_radio) 
      angle.grid(row=0,column=6) 
      radium = Radiobutton(root,text = "弧度",variable =v,value =2,command =radium_radio ) 
      radium.grid(row=0,column=7) 
       
      sinaa = Button(root,text = "Sin(x)",width =18,command = sin_x) 
      sinaa.grid(row = 1,column =6) 
      sinaa.bind("<Enter>",come) 
      sinaa.bind("<Leave>",go) 
      cosaa = Button(root,text = "COS(x)",width =18,command = cos_x) 
      cosaa.grid(row =1,column =7) 
      cosaa.bind("<Enter>",come) 
      cosaa.bind("<Leave>",go) 
      tanaa = Button(root,text = "tan(x)",width =18,command =tan_x) 
      tanaa.grid(row = 1,column =8) 
      tanaa.bind("<Enter>",come) 
      tanaa.bind("<Leave>",go) 
      x_square = Button(root,text = "x的平方",width =18,command = square_it) 
      x_square.grid(row =2,column =6) 
      x_square.bind("<Enter>",come) 
      x_square.bind("<Leave>",go) 
      X_Ytimes = Button(root,text = "x的Y次方",width =18,command =x_ypower) 
      X_Ytimes.grid(row = 2,column =7) 
      X_Ytimes.bind("<Enter>",come) 
      X_Ytimes.bind("<Leave>",go) 
      X_tri= Button(root,text = "x的三次方",width =18,command = tri_power) 
      X_tri.grid(row = 2,column =8) 
      X_tri.bind("<Enter>",come) 
      X_tri.bind("<Leave>",go) 
       
      leftbra = Button(root,text = "左括号 ( ",width =18,command = Bracket_left) 
      leftbra.grid(row = 3,column =6) 
      leftbra.bind("<Enter>",come) 
      leftbra.bind("<Leave>",go) 
      rightbra = Button(root,text = "右括号  )",width =18,command = Bracket_right) 
      rightbra.grid(row =3,column =7) 
      rightbra.bind("<Enter>",come) 
      rightbra.bind("<Leave>",go) 
      natural_logs = Button(root,text = "自然对数 In(x)",width =18,command =nature_log) 
      natural_logs.grid(row = 7,column =6) 
      natural_logs.bind("<Enter>",come) 
      natural_logs.bind("<Leave>",go) 
      square_root = Button(root,text = "x的平方根",width =18,command = sqrt_num) 
      square_root.grid(row =4,column =6) 
      square_root.bind("<Enter>",come) 
      square_root.bind("<Leave>",go) 
      X_Yroot = Button(root,text = "x的Y次方根",width =18,command = x_ypower) 
      X_Yroot.grid(row = 4,column =7) 
      X_Yroot.bind("<Enter>",come) 
      X_Yroot.bind("<Leave>",go) 
      X_tri_root = Button(root,text = "x的三次方根",width =18,command = tri_root) 
      X_tri_root.grid(row = 4,column =8) 
      X_tri_root.bind("<Enter>",come) 
      X_tri_root.bind("<Leave>",go) 
       
      log10aa = Button(root,text = "以10为底的对数Logx",width =18,command =deci_log) 
      log10aa.grid(row = 5,column =6) 
      log10aa.bind("<Enter>",come) 
      log10aa.bind("<Leave>",go) 
      log2aa = Button(root,text = "以2为底的对数Logx",width =18,command =bina_log) 
      log2aa.grid(row = 5,column =8) 
      log2aa.bind("<Enter>",come) 
      log2aa.bind("<Leave>",go) 
      pow10 = Button(root,text = "以x为底,y为真数的logx",width =18,command =y_based_on_x_log) 
      pow10.grid(row =5,column =7) 
      pow10.bind("<Enter>",come) 
      pow10.bind("<Leave>",go) 
      radio = Button(root,text = "圆周率 π",width =18,command =circle_ratio) 
      radio.grid(row = 7,column =7) 
      radio.bind("<Enter>",come) 
      radio.bind("<Leave>",go) 
      natur_con = Button(root,text = "自然常数e",width =18,command =natur_const) 
      natur_con.grid(row = 7,column =8) 
      natur_con.bind("<Enter>",come) 
      natur_con.bind("<Leave>",go) 
       
      antisin = Button(root,text = "反三角正弦sin(-1)x",width =18,height =1,command =anti_sin) 
      antisin.grid(row = 6,column =6) 
      antisin.bind("<Enter>",come) 
      antisin.bind("<Leave>",go) 
      anticos = Button(root,text = "反三角余弦cos(-1)x",width =18,height =1,command =anti_cos) 
      anticos.grid(row =6,column =7) 
      anticos.bind("<Enter>",come) 
      anticos.bind("<Leave>",go) 
      antitan = Button(root,text = "反三角正切tan(-1)x",width =18,height =1,command = anti_tan) 
      antitan.grid(row = 6,column =8) 
      antitan.bind("<Enter>",come) 
      antitan.bind("<Leave>",go) 
       
    ################### 
    if __name__ == "__main__": 
      ################################菜单设计 
      standard_it =True
      sci_it = False
      static_it = False
      code_it = False
      memorylist = [] 
      m_plus = False
      m_minus = False
      angle_is = False
      radium_is = False
      x =0
      list_power = [] 
      list_log =[] 
      xypower = False
      xylog = False
      text = Text(root,height =1,font = ("Times","20"),width =31,fg = "#%02x%02x%02x" % (46,150,67),bd =0) 
      text.grid(row = 0,column =0,columnspan =6) 
      text_alert = Text(root,height=1,width =31,fg = "red",font = ("Times","20"),bd = 0) 
      text_alert.grid(row =1,column =0,columnspan =6) 
       
      menubar = Menu(root) 
      mode_menu = Menu(menubar,tearoff= 0) 
      v_mode = IntVar() 
      mode_menu.add_radiobutton(label = "标准型",variable = v_mode,value =0,command =standard) 
      mode_menu.add_radiobutton(label = "科学型",variable = v_mode,value =1,command = sci) 
      mode_menu.add_radiobutton(label = "程序员型",variable =v_mode,value =2) 
      mode_menu.add_radiobutton(label = "统计型",variable = v_mode,value =3) 
       
      mode_menu.insert_separator(7) 
      v_his_math = IntVar() 
      mode_menu.add_radiobutton(label = "历史记录",variable = v_his_math,value =0) 
      mode_menu.add_radiobutton(label = "数字分组",variable = v_his_math,value =1) 
      menubar.add_cascade(label = "查看",menu = mode_menu) 
       
      mode_menu.insert_separator(11) 
      v_transform = IntVar() 
      mode_menu.add_radiobutton(label = "单位转换",variable =v_transform,value =1) 
       
      edit = Menu(menubar) 
      edit.add_command(label = "复制") 
      edit.add_command(label = "黏贴") 
      menubar.add_cascade(label = "编辑",menu = edit) 
       
      helpm = Menu(menubar) 
      helpm.add_command(label = "使用说明") 
      helpm.add_command(label = "版本为1.0") 
      menubar.add_cascade(label = "帮助",menu = helpm) 
      root.config(menu = menubar)#有这句菜单栏才能正常工作 
    #########################################窗体设计 
         
      standard() 
         
      sci() 
      root.mainloop()
    View Code

     有兴趣的朋友可以加群找群主,新手上路,才疏学浅。

    一纸高中万里风,寒窗读破华堂空。 莫道长安花看尽,由来枝叶几相同?
  • 相关阅读:
    数据解析1127
    数据解析1119
    数据解析1114
    数据解析1122
    数据解析1121
    数据解析1120
    数据解析1116
    数据解析1128
    Twitter惊现新型病毒 每分钟159条速率分散
    宏达电预计本年有望在台湾市场击败诺基亚
  • 原文地址:https://www.cnblogs.com/byczyz/p/14354582.html
Copyright © 2011-2022 走看看