Ruby Tk: how to make something happen periodically?

Discussion in 'Ruby' started by S P Arif Sahari Wibowo, Feb 10, 2007.

  1. Hi!

    In Ruby Tk, how to make something happen periodically, while the user
    does not touch the button, menu, etc.?

    Thanks!
    S P Arif Sahari Wibowo, Feb 10, 2007
    #1
    1. Advertising

  2. On Feb 10, 2007, at 2:30 AM, S P Arif Sahari Wibowo wrote:

    > In Ruby Tk, how to make something happen periodically, while the user
    > does not touch the button, menu, etc.?


    Go to <http://rubykitchensink.ca/> and search on "tktimer".

    Regards, Morton
    Morton Goldberg, Feb 10, 2007
    #2
    1. Advertising

  3. On Feb 10, 2007, at 2:51 AM, Morton Goldberg wrote:

    > On Feb 10, 2007, at 2:30 AM, S P Arif Sahari Wibowo wrote:
    >
    >> In Ruby Tk, how to make something happen periodically, while the user
    >> does not touch the button, menu, etc.?

    >
    > Go to <http://rubykitchensink.ca/> and search on "tktimer".


    Let me recant on that. It's better to go to Google and search "ruby
    +tktimer". This finds a lot more stuff. I also recommend the
    following link

    http://www.ruby-lang.org/cgi-bin/cvsweb.cgi/ruby/ext/tk/sample/

    There you will find links to tktimer.rb, tktimer2.rb, and tktimer3.rb
    -- these are examples of the use of the TkTimer class. It's also
    possible that you might find

    http://raa.ruby-lang.org/project/rubytk_en/

    and

    http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/212939

    useful.

    Regards, Morton
    Morton Goldberg, Feb 10, 2007
    #3
  4. On Feb 10, 3:22 am, Morton Goldberg <> wrote:
    > > Go to <http://rubykitchensink.ca/> and search on "tktimer".

    >
    > Let me recant on that. It's better to go to Google and search "ruby
    > +tktimer". This finds a lot more stuff. I also recommend the
    > following link
    > http://www.ruby-lang.org/cgi-bin/cvsweb.cgi/ruby/ext/tk/sample/


    Works like a charm, once I know the keyword, things went smoothly.
    Thanks!

    That said, do you know about proc in the arguments for TkTimer's start
    method / parameter, where its result goes?

    Thanks!
    S P Arif Sahari Wibowo, Feb 17, 2007
    #4
  5. On Feb 17, 2007, at 6:20 PM, S P Arif Sahari Wibowo wrote:

    > On Feb 10, 3:22 am, Morton Goldberg <> wrote:
    >>> Go to <http://rubykitchensink.ca/> and search on "tktimer".

    >>
    >> Let me recant on that. It's better to go to Google and search "ruby
    >> +tktimer". This finds a lot more stuff. I also recommend the
    >> following link
    >> http://www.ruby-lang.org/cgi-bin/cvsweb.cgi/ruby/ext/tk/sample/

    >
    > Works like a charm, once I know the keyword, things went smoothly.
    > Thanks!
    >
    > That said, do you know about proc in the arguments for TkTimer's start
    > method / parameter, where its result goes?


    No, I'm sorry, but I don't know where the result of a block passed to
    TkTimer#start goes. In my own work, I have always written these
    blocks for their effects, not their results. IMO you shouldn't rely
    on the results such blocks. Remember: "effect" can include
    modifications to the state of objects visible within your own code.

    Regards, Morton
    Morton Goldberg, Feb 18, 2007
    #5
  6. From: "S P Arif Sahari Wibowo" <>
    Subject: Re: Ruby Tk: how to make something happen periodically?
    Date: Sun, 18 Feb 2007 08:20:11 +0900
    Message-ID: <>
    > That said, do you know about proc in the arguments for TkTimer's start
    > method / parameter, where its result goes?


    Please try this.
    --------------------------------------------------------------
    TkTimer.new(100, 2, proc{|tm|
    p [:body, tm.class, tm.current_args, tm.return_value]
    tm.return_value + 1
    }).start(500, proc{|tm|
    p [:init, tm.class, tm.current_args, tm.return_value]
    4
    },
    1,2,3)
    --------------------------------------------------------------

    It will returns
    --------------------------------------------------------------
    (wait 500ms)
    [:init, TkTimer, [1, 2, 3], nil]
    (wait 100ms)
    [:body, TkTimer, [], 4]
    (wait 100ms)
    [:body, TkTimer, [], 5]
    --------------------------------------------------------------

    A TkTimer object keeps the result (last value) of the previous proc.
    You can get the result by TkTimer#return_value method.

    BTW, TkTimer class is not accurate. Because, the interval shows
    the wait between finish of previous proc and start of next proc.
    So, the timer delays by the time cost of the proc.

    TkRTTimer class is a little more accurate than TkTimer class.
    It modifies the interval based on the difference between the requested
    time and current time. It doesn't mean to keep same intervals.
    But it will make the delay by repeating minimum.
    Please try "ext/tk/sample/tkrttimer.rb".
    It will show you a part of properties of TkRTTimer class.
    --
    Hidetoshi NAGAI ()
    Hidetoshi NAGAI, Feb 18, 2007
    #6
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. H @ Q
    Replies:
    0
    Views:
    452
    H @ Q
    May 31, 2004
  2. =?Utf-8?B?U3RldmU=?=

    Activate ASP.NET periodically

    =?Utf-8?B?U3RldmU=?=, Feb 24, 2004, in forum: ASP .Net
    Replies:
    3
    Views:
    422
    John Timney \(Microsoft MVP\)
    Feb 25, 2004
  3. telecom news
    Replies:
    0
    Views:
    329
    telecom news
    Mar 26, 2008
  4. telecom news
    Replies:
    0
    Views:
    424
    telecom news
    Mar 26, 2008
  5. Arm7
    Replies:
    1
    Views:
    293
    Juha Nieminen
    Aug 28, 2008
Loading...

Share This Page