[#5219] ruby for perl users — Noritsugu Nakamura <nnakamur@...>

35 messages 1997/11/09
[#5220] Re: ruby for perl users — tateishi@... (Tateishi Takaaki) 1997/11/09

立石です。

[#5224] Re: ruby for perl users — shugo@... (Shugo Maeda) 1997/11/09

前田です。

[#5243] read from subprocess — Kikutani Makoto <kikutani@...>

きくたにです。

17 messages 1997/11/10
[#5250] Re: read from subprocess — matz@... (Yukihiro Matsumoto) 1997/11/11

まつもと ゆきひろです

[#5300] Win32用の Rubyでの tkの使用 — Tomoaki Takebayashi <tota@...>

はじめまして、竹林といいます。

14 messages 1997/11/15
[#5302] Re: Win32用の Rubyでの tkの使用 — WATANABE Hirofumi <eban@...> 1997/11/15

わたなべです.

[#5303] Re: Win32 用の Rubyでの tkの使用 — Tomoaki Takebayashi <tota@...> 1997/11/15

[#5305] Re: Win32 用の Ruby での tk の使用 — aito@...5sun.yz.yamagata-u.ac.jp 1997/11/17

あ伊藤です.

[#5320] ruby 1.0-971118 released — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

20 messages 1997/11/18
[#5337] Re: ruby 1.0-971118 released — WATANABE Hirofumi <watanabe@...> 1997/11/19

わたなべです.

[#5340] Re: ruby 1.0-971118 released — matz@... (Yukihiro Matsumoto) 1997/11/19

まつもと ゆきひろです

[#5398] 配列への追加について — a-nisida@... (西田明良)

はじめまして、西田@初心者 と申します。m(..)m

16 messages 1997/11/22

[ruby-list:5203] Tk の使い方

From: nkon@...2.3web.ne.jp
Date: 1997-11-01 01:58:38 UTC
List: ruby-list #5203
近藤と申します。
お絵書きアプリケーションを作っているのですが、
うまく、動きません。添削していただけないでしょうか。
以下は、作っているプログラムを簡単に直したものです。
環境は、
ruby - version 1.0-971003 (i586-linux)
wish   4.2jp  (libtcl7.6jp, libtk4.2jp)
です。

プログラムの構成としては、
各データファイルごとに class Cet のインスタンスを作成して、
toplevel window を作成します。root window はwithdraw で表示しません。

問題点は、
1. Manager#initialize で Tk.after 1000, Proc.new{@root.withdraw}
   で root window を消しているのですが、root window がうまく消される時
   と、ずっと表示されたままの時があります。表示されたままの時が多いで
   す。
2. Cet#initialize で widgets を作成しているのですが、canvas に
   scrollbar をつけています。最初は、思った通りに表示されているのです
   が、scrollbar を動かしたら、突然終了してしまいます。

以上、どのようにしたら良いでしょうか。
また、皆様のデバッグ方法などについて教えて下さい。
よろしくお願い致します。

--
*** メイルアドレス変わりました ***
近藤靖浩 <nkon@osk2.3web.ne.jp>
http://www2.osk.3web.ne.jp/~nkon/3web/
http://tsl.pe.u-tokyo.ac.jp/~kon/tslhome/

---- プログラムファイル

require "tkclass"

class Manager

  def initialize
	@windows = []

	# 見えない root window を作成
	@root = TkRoot.new
	Tk.after 1000, Proc.new{@root.withdraw}
  end

  def newcreate
	filename = "/CET_NEW_FILE."
	filename += @windows.size
	@windows += Cet.new(filename)
	return @windows[@windows.size - 1]
  end

  def get_root
	return @root
  end

end

# cet.rb

class Cet

  def initialize(filename)
	@filename = filename;

	# 窓の初期化
	@toplevel = TkToplevel.new($manager.get_root)
	@toplevel.title(@filename)

	# Menu Bar
	@menuframe = TkFrame.new(@toplevel, {"border" => 1, "relief" => "raised"})
print @menuframe.path, "\n" if $VERBOSE

	# File Menu
	@menu_file = TkMenubutton.new(@menuframe, {"text" => "File", "underline" => 0});
	@menu_file_m = TkMenu.new(@menu_file, {"tearoff" => "no"})
	@menu_file_m.add("command", \
					 {"label" => "New", "underline" => 0, \
					   "command" => proc{$manager.new}})
	@menu_file.menu(@menu_file_m);
	@menu_file.pack({"side" => "left"})

	# Canvas Area
 	@canvasframe = TkFrame.new(@toplevel);
#print @canvasframe.path, "\n" if $VERBOSE
 	@canvas = TkCanvas.new(@canvasframe, {"bg" => "gray80", \
							 "width" => 600, "height" => 480, \
							 "scrollregion" => "0 0 600 480", \
							 "relief" => "raised", "border" => 1});
#print @canvas.path, "\n" if $VERBOSE
 	@h_scroll = TkScrollbar.new(@canvasframe, {"relief" => "sunken", \
 							  "orient" => "horizontal", \
 							  "command" => @canvas.yview});
print @h_scroll.path, "\n" if $VERBOSE
	@v_scroll = TkScrollbar.new(@canvasframe, {"relief" => "sunken", \
 							  "orient" => "vertical", \
 							  "command" => @canvas.xview});
print @v_scroll.path, "\n" if $VERBOSE
 	@canvas.configure("xscrollcommand", @h_scroll.path+" set");
 	@canvas.configure("yscrollcommand", @v_scroll.path+" set");
 	@v_scroll.pack({"side" => "right", "fill" => "y"});
 	@h_scroll.pack({"side" => "bottom", "fill" => "x"});
	@canvas.pack "fill" => "both", "expand" => "yes";
	
	@menuframe.pack({"side" => "top", "fill" => "x"});
	@canvasframe.pack({"side" => "top", "fill" => "both", "expand" => "yes"});

  end;

end

# main

# アプリケーションマネージャの作成
$manager = Manager.new

$manager.newcreate  # Cet アプリケーションの作成

Tk.mainloop


In This Thread