Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Ruby > Ruby/Tk

Reply
Thread Tools

Ruby/Tk

 
 
graycardinalster@gmail.com
Guest
Posts: n/a
 
      05-15-2009
Hi !

I have a trouble.
###
require "tk"

class Main
def initialize
@root = TkRoot.new { title "prog" }

top = TkToplevel.new
@edit = TkEntry.new(top) {
pack
}

cmd = proc { puts @edit.get }

button = TkButton.new(@root) {
pack
text ""
command cmd
}

top.grab
Tk.mainloop
end
end

m = Main.new
###
How to get @edit value after "top" is closed ?
 
Reply With Quote
 
 
 
 
Diego Virasoro
Guest
Posts: n/a
 
      05-16-2009
> How to get @edit value after "top" is closed ?

If I remember correctly you need to use @edit.value

---
Diego
 
Reply With Quote
 
 
 
 
Hidetoshi NAGAI
Guest
Posts: n/a
 
      05-16-2009
From: "(E-Mail Removed)" <(E-Mail Removed)>
Subject: Ruby/Tk
Date: Fri, 15 May 2009 23:45:07 +0900
Message-ID: <(E-Mail Removed)>
> How to get @edit value after "top" is closed ?


One of the simple solution is to use a TkVariable and
'textvariable' option of an entry widget.
------------------------------------------
@edit_var = TkVariable.new
@edit = TkEntry.new(top, :textvariable=>@edit_var).pack
:
cmd = proc{ puts @edit_var.value }
------------------------------------------
--
Hidetoshi NAGAI ((E-Mail Removed))

 
Reply With Quote
 
Oleg Igor
Guest
Posts: n/a
 
      05-17-2009
I not found -textvariable options in TkText
--
Posted via http://www.ruby-forum.com/.

 
Reply With Quote
 
Hidetoshi NAGAI
Guest
Posts: n/a
 
      05-17-2009
From: Oleg Igor <(E-Mail Removed)>
Subject: Re: Ruby/Tk
Date: Sun, 17 May 2009 18:55:47 +0900
Message-ID: <(E-Mail Removed)>
> I not found -textvariable options in TkText


If you use Tcl/Tk8.5, Tk::Text:eer widget is useful.
----------------------------------------------------------------------
txt = Tk::Text.new # A base text widget.
# In this case, it isn't shown on the GUI.

top = Tk::Toplevel.new
peer = Tk::Text:eer.new(txt, top).pack
# A peer widget of 'txt' widget. Its parent is 'top' widget.

# ... destroy 'top' widget ...

p txt.value # This is the same content with the destroyed peer.
----------------------------------------------------------------------

If you use Tcl/Tk8.4 or the former version,
you can "withdraw" the dialog instead of "destroy".
----------------------------------------------------------------------
top = Tk::Toplevel.new
txt = Tk::Text.new(top).pack
@value = ""
top.protocol('WM_DELETE_WINDOW'){ top.withdraw; @value = txt.value }
# Ignore 'WM_DELETE_WINDOW' protocol (e.g. when click the 'delete'
# button on the window frame) from a window manager.
# In this case, withdraw the toplevel widget instead of destroy it.

# ... withdraw the toplevel ...

p @value

top.deiconify # Display the toplevel widget in normal form.
----------------------------------------------------------------------

Or, get value before destroying the toplevel.
----------------------------------------------------------------------
top = Tk::Toplevel.new
txt = Tk::Text.new(top).pack
@value = ""
top.protocol('WM_DELETE_WINDOW'){ @value = txt.value; top.destroy }

# ... destroy the toplevel ...

p @value
----------------------------------------------------------------------
--
Hidetoshi NAGAI ((E-Mail Removed))

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off




Advertisments