<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      ruby tk實(shí)現(xiàn)簡(jiǎn)易計(jì)算器

      #encding:GBK
      require 'tk'
      
      module Const
        WIDTH_OF_PANEL = 370
        HEIGHT_OF_PANEL = 520
        SIZE_OF_BUTTON_H = 60
        SIZE_OF_BUTTON_W = 80
        HEIGHT_OF_DISPLAY_FRAME = 90
        HEIGHT_OF_VALUE_LABEL = 30
        HEIGHT_OF_OPERATION_LABEL = 20
        BORDER_WIDTH = 2
        PADX = 10
        PADY = 10
        OP_ARRAY = ["%","sqrt","x^2","1/x","CE","C","DEL","/","7","8","9","*","4","5","6","-","1","2","3","+","+/-","0",".","="]
      end
      
      include Const
      
      $value_tk_var = TkVariable.new(0)
      $operate_tk_var = TkVariable.new
      $Font = TkFont.new('arial 18')
      
      class ButtonInfor
        attr_accessor :x, :y
        protected :x=, :y=
        def initialize(x=0,y=0)
          @x , @y = x , y
        end
      end
      
      module Work
        def number(num)
          if $value_tk_var.value == "0"
            $value_tk_var.value = num
          elsif $value_tk_var.value == '-0'
            $value_tk_var.value = $value_tk_var.value.chop + num
            puts "bbbb"
          elsif $value_tk_var.value != "0"
            $value_tk_var.value += num
          end
        end
      
        def point
          unless /\./ =~ $value_tk_var.value
            $value_tk_var.value += "."
          end
        end
      
        def calcu( key )
          unless (/\+/ =~ $operate_tk_var.value || /-/ =~ $operate_tk_var.value || /\*/ =~ $operate_tk_var.value || /\// =~ $operate_tk_var.value)
            $operate_tk_var.value = $value_tk_var.value + " " + key
            $value_tk_var.value = 0
          else
            $operate_tk_var.value = $operate_tk_var.value.chop + key
          end
        end
      
        def equl
          operator_ = $operate_tk_var.value[$operate_tk_var.value.size-1]
          $operate_tk_var.value = $operate_tk_var.value.chop
          num2 = (/\./ =~ $value_tk_var.value) ? $value_tk_var.value.to_f : $value_tk_var.value.to_i
          num1 = (/\./ =~ $operate_tk_var.value) ? $operate_tk_var.value.to_f : $operate_tk_var.value.to_i
          case operator_
          when "+"
            $value_tk_var.value = ( num1 + num2 ).to_s
          when "-"
            $value_tk_var.value = ( num1 - num2 ).to_s
          when "*"
            $value_tk_var.value = ( num1 * num2 ).to_s
          when "/"
            if num2 == 0 || num2 == 0.0
              $value_tk_var.value = "CANNOT DEVIDED BY 0!"
            else
              $value_tk_var.value = ( num1 / num2 ).to_s
            end
          end
          $operate_tk_var.value = nil
        end
      
        def clear(op)
          $value_tk_var.value = 0
          $operate_tk_var.value = nil if (op == "C")
        end
      
        def del
          $value_tk_var.value = $value_tk_var.value.chop
        end
      
        def sqrt_
          $value_tk_var.value = Math.sqrt($value_tk_var.value.to_f)
        end
      
        def sq_
          $value_tk_var.value = $value_tk_var.value.to_f * $value_tk_var.value.to_f
        end
      
        def devide_one
          $value_tk_var.value = 1/($value_tk_var.value.to_f)
        end
      
        def negate
          if $value_tk_var.value[0] != '-'
            $value_tk_var.value = "-" + $value_tk_var.value
          else
            $value_tk_var.value = $value_tk_var.value.reverse.chop.reverse
          end
        end
      
        def get_pos_hash
          tmp = Hash.new
          (0..23).each do |i|
            tmp[OP_ARRAY[i]]=ButtonInfor.new((i%4)*(PADX+SIZE_OF_BUTTON_W),(i/4)*(PADY+SIZE_OF_BUTTON_H))
          end
          return tmp
        end
      
        module_function :number , :point , :clear , :calcu , :equl , :del , :sqrt_ , :sq_ , :devide_one , :get_pos_hash ,:negate
      end
      
      #創(chuàng)建主窗口
      root = TkRoot.new do
        title "SHH's Calculator";
        geometry WIDTH_OF_PANEL.to_s + "x" + HEIGHT_OF_PANEL.to_s;
      end
      
      operat_frame = TkFrame.new do
        relief 'groove'
        pack('fill' => 'x')
        borderwidth BORDER_WIDTH
        padx PADX
        pady PADY
        place:'height' => HEIGHT_OF_PANEL-HEIGHT_OF_DISPLAY_FRAME , 'width' => WIDTH_OF_PANEL , 'x' => 0 , 'y' => HEIGHT_OF_DISPLAY_FRAME
        background "LightCyan"
      end
      
      display_frame = TkFrame.new do
        relief 'groove'
        pack('fill' => 'x')
        borderwidth BORDER_WIDTH
        padx PADX
        pady PADY
        place:'height' => HEIGHT_OF_DISPLAY_FRAME , 'width' => WIDTH_OF_PANEL , 'x' => 0 , 'y' => 0
        background "lightblue"
      end
      
      value_label = TkLabel.new(display_frame) do
        relief 'groove'
        pack('fill' => 'x')
        borderwidth BORDER_WIDTH
        textvariable
        font $Font
        place:'height' => HEIGHT_OF_VALUE_LABEL , 'width' => WIDTH_OF_PANEL - PADX * 2 , 'x' => 0 , 'y' => 0
      end
      
      operation_label = TkLabel.new(display_frame) do
        relief 'groove'
        pack('fill' => 'x')
        borderwidth BORDER_WIDTH
        textvariable
        font TkFont.new('arial 10')
        place:'height' => HEIGHT_OF_OPERATION_LABEL , 'width' => WIDTH_OF_PANEL * 0.618  , 'x' => WIDTH_OF_PANEL * (1-0.618) - PADX * 2 , 'y' => HEIGHT_OF_VALUE_LABEL + PADY
      end
      
      value_label['textvariable'] = $value_tk_var
      operation_label['textvariable'] = $operate_tk_var
      
      Work.get_pos_hash().each do |key,value|
        TkButton.new(operat_frame) do
          font "Consolas 15"
          place:'height' => SIZE_OF_BUTTON_H , 'width' => SIZE_OF_BUTTON_W , 'x' => value.x , 'y' => value.y
          text key
          background (("0".."9") === key)? "Gainsboro" : "Gray"
          command do
            case key
            when ("0".."9")
              Work.number(key)
            when "."
              Work.point()
            when "+","-","*","/"
              Work.calcu(key)
            when "="
              Work.equl()
            when "CE","C"
              Work.clear(key)
            when "DEL"
              Work.del()
            when "sqrt"
              Work.sqrt_()
            when "x^2"
              Work.sq_()
            when "1/x"
              Work.devide_one()
            when "+/-"
              Work.negate()
            end
          end
        end
      end
      
      Tk.mainloop

       

      posted @ 2019-07-10 20:00  SHHHS  閱讀(431)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 日韩人妻无码精品久久| 国产精品亚洲二区在线播放| 亚州少妇无套内射激情视频| 亚洲国产一区二区三区最新| 偷拍精品一区二区三区| 安乡县| 日韩美女亚洲性一区二区| 国产精品一区二区久久精品无码| 日本伊人色综合网| 日韩人妻无码精品久久| 国产免费无遮挡吃奶视频| 国产精品线在线精品| 欧美在线观看www| 国产成人精品一区二三区| 中文字幕精品亚洲无线码二区| 日韩黄色av一区二区三区 | 天堂中文8资源在线8| 国产超高清麻豆精品传媒麻豆精品 | 午夜福利国产精品小视频| 国产明星精品无码AV换脸| 东京热一精品无码av| 亚洲精品综合久中文字幕| 国产白嫩护士被弄高潮| 91人妻熟妇在线视频| 99久久国产精品无码| 无码一区二区三区视频| 亚洲欧洲自拍拍偷午夜色| 亚洲欧洲日产国产 最新| 亚洲欧美综合人成在线| 国产不卡免费一区二区| 亚洲a∨国产av综合av| 广东省| 日本久久精品一区二区三区| 果冻传媒色av国产在线播放| 人人爽亚洲aⅴ人人爽av人人片| 大尺度国产一区二区视频| 激情偷乱人成视频在线观看| 亚洲色大成网站WWW国产| 午夜大尺度福利视频一区| 亚洲最大成人网色| 欧美人成精品网站播放|