zoukankan      html  css  js  c++  java
  • Tk库的使用(2)

    # Sample code from Programing Ruby, page 250
    require 'tk'

    class GifViewer

      def initialize(filelist)
        setup_viewer(filelist)
      end

      def run
        Tk.mainloop
      end

      def setup_viewer(filelist)
        @root = TkRoot.new {title 'Scroll List'}
        frame = TkFrame.new(@root)

        image_w = TkPhotoImage.new
        TkLabel.new(frame) do
          image image_w
          pack 'side'=>'right'
        end

        list_w = TkListbox.new(frame) do
          selectmode 'single'
          pack 'side' => 'left'
        end
          
        list_w.bind("ButtonRelease-1") do
          busy do
            filename = list_w.get(*list_w.curselection)
            tmp_img = TkPhotoImage.new { file filename }
            scale   = tmp_img.height / 100
            scale   = 1 if scale < 1
            image_w.copy(tmp_img, 'subsample' => [scale, scale])
            image_w.pack
          end
        end

        filelist.each do |name|
          list_w.insert('end', name) # Insert each file name into the list
        end

        scroll_bar = TkScrollbar.new(frame) do
          command {|*args| list_w.yview *args }
          pack    'side' => 'left', 'fill' => 'y'
        end

        list_w.yscrollcommand  {|first,last| scroll_bar.set(first,last) }
        frame.pack
      end

      # Run a block with a 'wait' cursor
      def busy
        @root.cursor "watch" # Set a watch cursor
        yield
      ensure
        @root.cursor "" # Back to original
    end

    end

    viewer = GifViewer.new(Dir["H:/ͼƬ/QQGIf/*.gif"])
    viewer.run

  • 相关阅读:
    逆向初级-win32(四)
    逆向初级-C++(三)
    逆向初级-C语言(二)
    逆向初级-汇编(一)
    Kimabll数仓架构下如何确定模型落地哪些表
    浅谈数据仓库设计
    (转)Go语言的%d,%p,%v等占位符的使用
    (转)深入MySQL源码 学习方法 何登成专家
    (转)浅析MySQL二段锁
    (转)MySQL:为什么无法KILL在processlist中的语句
  • 原文地址:https://www.cnblogs.com/djcsch2001/p/2035865.html
Copyright © 2011-2022 走看看