【问题标题】:How do I restore a windows size and position in a wxRuby app?如何在 wxRuby 应用程序中恢复窗口大小和位置?
【发布时间】:2010-09-15 11:21:11
【问题描述】:

有人知道在 wxRuby 中恢复窗口位置和大小的示例代码吗?

【问题讨论】:

    标签: ruby wxruby


    【解决方案1】:

    YAML 是序列化首选项的更好选择,但这里我只是在 prefs.txt 文件中存储一个逗号分隔的字符串。

    require "rubygems"
    require "wx"
    include Wx
    
    class MyApp < App
      def on_init
        left, top, width, height = *prefs
        position = Point.new(left, top)
        size = Size.new(width, height)
        main = Frame.new(nil, -1, "Title", position, size)
    
        #when the window closes, save the location
        main.evt_close do |event|
          save_window_location(event.get_event_object)
          event.skip
        end
        main.show()
      end
    
      private
    
      def save_window_location(frame)
        self.prefs = [
          frame.position.x,
          frame.position.y,
          frame.size.width,
          frame.size.height
        ]
      end
    
      #load the prefs and return them as an array
      def prefs
        location = []
        begin
          location = File.read(prefs_filename).split(',').map{|s| s.to_i}
        rescue Exception
          #file didn't exist, or read failed
        end
        location = [100, 100, 300, 300] if location.size != 4
        return location
      end
    
      #save the prefs as a comma-delimited string
      def prefs=(prefs_array)
        File.open(prefs_filename, 'w') do |prefs_file|
          prefs_file << prefs_array.join(",")
        end
      end
    
      def prefs_filename
        'prefs.txt'
      end
    end
    
    MyApp.new.main_loop
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-22
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-25
      • 2010-10-30
      相关资源
      最近更新 更多