[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 12/27 01:06 / Filesize : 255 KB / Number-of Response : 921
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

GTK プログラミング!!



1 名前:login:Penguin [2001/07/22(日) 22:31]
俺の様な厨房プログラマーをある程度使えるようにまで育成して、和製糞ソフトを
大量量産するのが目的のスレッドです。
とりあえずGNOMEプログラミング(小学館)を買ってきました。
これから読んでみます。

501 名前:login:Penguin [04/06/06 04:10 ID:XtA0mCdQ]
3日と16時間23分、誰も取ろうとしなかった500ゲトおめ(w

502 名前:login:Penguin [04/06/06 10:31 ID:YeSwYVrz]
GtkComboで今何番目のリストが選択されているかを知るにはどうすれば良いのでしょうか?

1個目→A
2個目→B
3個目→C

となっていて、2個目が選択されている場合に「B」という文字ではなく、
「2」という数値を取得したいのです。

503 名前:login:Penguin mailto:sage [04/06/06 11:38 ID:prFiANc0]
GList の中から文字列を検索するのはどうよ?

GList は要素を指定してその位置を返す関数があったような気がする。

504 名前:502 mailto:sage [04/06/08 14:03 ID:PyaDVVHB]
レス遅れてすいません。

教えて貰ったことを踏まえて、
色々調べたり悩んだりしたのですが、
結局力業で処理してしまいました。

505 名前:login:Penguin [04/06/23 23:57 ID:MDTSH8fN]
しばらく反応がないのでage

で、質問ですが、mngのgdk-pixbuf loaderって、どこかにあります?
ぐぐって見ると、去年のgtk-develでmng loaderの話が出ているのですが、
libmng方で問題があるとかいう発言以降、何の動きもないみたいです。

mail.gnome.org/archives/gtk-devel-list/2003-June/msg00070.html


506 名前:login:Penguin mailto:sage [04/06/25 22:53 ID:s+nmqGmL]
GTK+/GDKによるLinuxアプリケーション開発 Eric Harlow著に載ってるソースコードって
どこからかダウンロード出来るのでしょうか?
記載されてるページへいってもNOT FOUNDなもんで、、、

507 名前:login:Penguin [04/06/26 02:07 ID:ot6kutpS]
>>506
ttp://www.seshop.com/detail.asp?pid=696 の左側 「関連リンク」の
サンプルダウンロードからダウンロード可能

508 名前:login:Penguin mailto:sage [04/06/26 02:25 ID:ot6kutpS]
こっちが本家のようです。

ttp://www.informit.com/title/0735700214#

の 0735700214.tar.gz

509 名前:login:Penguin mailto:sage [04/06/26 03:04 ID:uwUdg/T9]
>>507,508
DLできました。
有り難うございました



510 名前:login:Penguin [04/07/01 14:49 ID:2+uzpSCS]
GTK+ 2.0 チュートリアル 2003-01-24 版 日本語版
www.gnome.gr.jp/docs/gtk+-2.0.x-tut/gtk-tut.html

511 名前:login:Penguin [04/07/02 20:41 ID:ruSxXmGR]
Labelの色を指定するのはどうすれば良いのでしょうか?
リソースファイルではなくてプログラム中で変更したいのです。
同じラベルに対してokなら青errorなら赤みたいに。

512 名前:login:Penguin mailto:sage [04/07/02 20:49 ID:EdA1krgC]
label = gtk_label_new (NULL);
gtk_label_set_markup (GTK_LABEL(label), "<span foreground='red'>red</span>");
では?


513 名前:login:Penguin mailto:sage [04/07/02 21:07 ID:NFwwiccW]
>>511

www.gnome.gr.jp/docs/gtk+faq.20040114.html#AEN811

514 名前:511 [04/07/02 22:06 ID:ruSxXmGR]
>>512

おおお、こんなに早くレスがつくとは思いませんでした。
gtk_widget_set_colormapあたりかと思って悩んでました。
ありがとうございました。

515 名前:login:Penguin [04/07/17 01:44 ID:gxRBMExw]
gtk_signal_connect(GTK_OBJECT(window), "key_press_event",
GTK_SIGNAL_FUNC(KeyPress), NULL);

でコールバック関数を登録し、

static void KeyPress(GdkEventKey *event)
{
g_print("%x\n",event->keyval);
}
}

これで押されたキーを判別しようと思ったのですが
実行結果はどのキーを押しても 0 と表示されてしまいます。
何か使い方が間違っているのでしょうか?
それとも、仕様ですか?

516 名前:515 [04/07/17 01:45 ID:gxRBMExw]

余計な閉じ括弧がひとつありますが、書き込み時に間違えて入力してしまったものです。
気にしないでください。

517 名前:515 mailto:sage [04/07/17 02:05 ID:gxRBMExw]
自己解決しました。
お騒がせしました。

518 名前:login:Penguin [04/07/20 21:04 ID:mCNuObfQ]
X11^^^^

519 名前:login:Penguin [04/07/21 13:46 ID:q4gHD8Am]
質問です。

gtk_widget_refってどういう目的で使うのでしょうか。
glade使うとwidgetをcreateした後に必ずついてくるんですが
gtk_widget_refを使わないでcreateするだけだと
何かまずいことが起こるんでしょうか。




520 名前:login:Penguin mailto:sage [04/07/22 16:23 ID:y/5s047B]
>>519

>glade使うとwidgetをcreateした後に必ずついてくるんですが
>gtk_widget_refを使わないでcreateするだけだと
>何かまずいことが起こるんでしょうか。

glade 使うと gtk_object_set_data_full してるからgtk_widget_ref
は、おいといたほうが良いと思う。

起動から終了までの間にウィジットを破棄したりしないなら gtk_widget_ref
は不要とか言うのは無謀かな?よくわかってないけど。

521 名前:login:Penguin [04/07/31 10:39 ID:MPOS1TDH]
Window全体に影を付けたいのですがパッチとかないですか?


522 名前:login:Penguin mailto:sage [04/08/06 15:14 ID:IQdNzkhX]
1はいずこ...


523 名前:login:Penguin mailto:sage [04/08/25 15:55 ID:j+IRN/yq]
GtkGLExtの日本語マニュアルは無いのか…まぁ訳すけれど…
作者日本人だよな。なんか複雑。

524 名前:login:Penguin mailto:sage [04/08/25 20:34 ID:i4j2Wyy5]
>>523
日本語だと解説やマニュアルどころか、情報自体がないな・・・。
どころか、英語でも状況はかわらなさそう・・・。

使ってる人いるのか?と思ってしまう。

525 名前:Exampleに数時間気づかなかった人(1/20) mailto:sage [04/08/26 13:56 ID:9NdnJg9X]
>>524
mail.gnome.org/archives/gtkglext-list/index.html
あちらの国でのメーリングリストを見ると大して人気があるようには見えない。
評価用の2画面同時表示とかサンプルのようなソースの疑問点?の質問が多いね。

gtkglext.sourceforge.net/
どーでもいーがサイトにあるlogo.cは、インストールした中のExampleの
ソースのままなので、Exampleの下からlogo.hとかを持ってこないと表示できない。

526 名前:login:Penguin [04/08/29 01:43 ID:I8sIe2mZ]
Gtkのイベント(シグナル?)についてお聞きしたいのですが、
独自イベントを作ってgtkのメインループの中でハンドリングするには
どのようにコーディングすればよいのでしょうか?

よろしくお願いします。

527 名前:login:Penguin mailto:sage [04/08/29 18:32 ID:0ci6kHoF]
スクロールバーが付いたテキスト入力の領域を作るにはどうすればいいのでしょ
うか?
scrolled_window = gtk_scrolled_window_new(NULL, NULL);
でscrolled_windowを作り,
text = gtk_text_new(NULL, NULL);
でテキストウィジェットを作り,
gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scrolled_window), text);
としてみましたが,スクロールバーが一杯になっていて全くスクロールできません.
www.gnome.gr.jp/docs/gtk+-2.0.x-tut/gtk-tut.html
こことかを見てみましたが,一行入力のテキストエントリしか書いてなかった
のでわかりませんでした.この方法ではできないのでしょうか?初歩的な質問
ですみません.


528 名前:login:Penguin mailto:sage [04/08/29 20:56 ID:3dMcPoCy]
>>527

gtk_container_add (GTK_CONTAINER (scrolled_window), text);



529 名前:527 mailto:sage [04/08/29 23:43 ID:0ci6kHoF]
できました!ありがとうございます.




530 名前:login:Penguin [04/09/02 19:50 ID:UwBORxvn]
windowをマウスで左クリックしたら「クリックしたよ!」というメッセージを出すプログラムを
書こうと思い、eventの中からマウスで左クリックしたeventを取り出して標準出力するつもり
のプログラムを書いたのですが、意図した通りに動いてくれません。おそらくイベントハンドラ
のところがおかしいのでしょうが、どのように書けばよいでしょうか?
---------
#include<gtk/gtk.h>
#include<stdio.h>

static gboolean click_event(GtkWidget *widget, GdkEventButton *event,
gpointer data){
if(event->type==GDK_BUTTON_PRESS &&
event->button==1){
g_print("Mouse clicked! \n");
}
return FALSE;
}

int main(int argc,char *argv[]){
GtkWidget *window;
gtk_init(&argc, &argv);

window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
g_signal_connect(G_OBJECT(window), "event",
G_CALLBACK(click_event), NULL);

gtk_widget_show(window);
gtk_main();
return(0);
}

531 名前:login:Penguin [04/09/02 21:27 ID:B1qwsflf]
>530
Xlibをインクルードしていないじゃないか。
それではメッセージは受け取れないな。

532 名前:login:Penguin mailto:sage [04/09/02 22:24 ID:Iz+TckRx]
>>530
window でマウスのイベントを取ってどうするんだ、というのは置いといて・・。

window のイベントマスクを設定する。




533 名前:MyDoom被害経験者(当時は深刻) [04/09/06 00:41 ID:vttGuatR]
GtkとKDE/Qtでは、どちらがGUI programmingを始め易いんでしょうか?
コード量の少なくて済む方を教えてください。

534 名前:login:Penguin mailto:sage [04/09/06 00:48 ID:yRhIRqUd]
>>533
お手軽なほうがいいってんならTcl/Tkやっとけ。コード量少なくてすむぞ。(藁
それぞれのサンプルコード見てこっちが性に合ってるな、とか、KDEメインに使ってるからQtとかないのかね。
どっちにしたってGUIプログラミングする分にはコード書くし、量的に差があるったって鼻毛みたいなもんだよ。;-p

535 名前:login:Penguin mailto:sage [04/09/06 02:35 ID:mXXgruj5]
CがいいかC++がいいかで選んだら?

536 名前:login:Penguin mailto:sage [04/09/06 08:07 ID:j+KxsIhK]
>>533
この質問、やたらあちこちで見るな。

537 名前:login:Penguin mailto:sage [04/09/06 12:41 ID:fIwSWiYt]
サポートしてる言語がやたら多いのはGtk+。
C++, Python, Ruby, Perl, Scheme, Tcl, PHP, Java, C#, OCaml, Haskell みたいに
実用一辺倒から Research Language までいろいろ。
ただ完成度やドキュメントの整備状況は言語でまちまち。

Qt はその仕組み上そういうバインディングが作りにくいそうな。数少ない
バインディングも Qt2 にしか対応して無いのが多い。

538 名前:login:Penguin mailto:sage [04/09/06 14:20 ID:mXXgruj5]
Gtk+はバインディングが充実してるものの情報が少ない、ともいえる。
また、CがデフォなだけにC++でさえ情報が少ないっつーのが難点。

Qtのバインディングで実用レベルなのはPythonくらいだが、これは結構
情報も多くしっかりしてる。

両方やってる感じでは、言語で選ぶならC++かPythonならQt、それ以外
ならGtk+ってのが妥当だと思う。もちろんツールキットにあわせて言語
を選ぶなら好きにしてくれってことだが。

539 名前:login:Penguin mailto:sage [04/09/06 16:38 ID:iCHw81Ws]
あと、あまり気にしないとは思うがシェアウェア化とか商用にするのなら
Qtはライセンス購入が必要になる(QPL)
厳密にはGtkもGPLなのでオープンソースが義務付けられたり、色々あるんだが…
オレ的ルールを使用する会社等は「ライブラリの改変をしなければ使いたいホーダイ」という有様。

何の為に勉強しているかは知らないが、オレの勝手なイメージでは

Gtk:
オープンソースしていいクリエーター
一般的な研究者
小中企業

Qt:
コアな研究者
大企業

が使用している。

あと勘違いしている人が多かったんだけれど、
どちらも英語の読解力は必要(Linuxをやっていたら常識とは思うが)
Gtkを表面だけ理解するなら日本語のドキュメントだけで事足りる。
Qtは最初から英語のドキュメントとにらめっこすることになる…かもしれない。



540 名前:login:Penguin mailto:sage [04/09/06 17:03 ID:X3pm9qox]
Gtk+ は LGPL なので商用ソフトウェアも開発可能ですが

541 名前:login:Penguin [04/09/07 22:03 ID:/BPz6lrP]
ウインドウをクリックしたらそのウインドウサイズを取得したいのですがどうすればできますか?

542 名前:login:Penguin mailto:sage [04/09/07 22:13 ID:CyRP0Tn+]
>>541
クリックで起動されたコールバックの中で gtk_window_get_size

543 名前:login:Penguin [04/09/07 22:43 ID:/BPz6lrP]
>>542
さんきゅー。できました!

544 名前:login:Penguin [04/09/07 23:54 ID:4Dablgl8]
Gtkにラッパーとかかませて、UNIX(LINUX)とC/C++でWin32のようなプログラミングできるようにした環境って
ないのかな。
(つまりCreateWindow〜CALLBACK WNdProc〜GetMessageのような流れで作る環境)

545 名前:login:Penguin mailto:sage [04/09/08 00:46 ID:k2AJ7vTU]
gtkmmでは不満?

546 名前:login:Penguin mailto:sage [04/09/08 01:11 ID:mJ44H/or]
マルチプラットフォームを考えてるならwxWidgetかな。

547 名前:login:Penguin mailto:sage [04/09/08 03:30 ID:U5iHDCUQ]
>>544
そりゃあ、無いでしょ。Windows上ですら、制作者はWin32 APIを直に使って
アプリケーションを書きたいなんて思わないんだから。


548 名前:login:Penguin mailto:sage [04/09/08 03:56 ID:TMOl9BnE]
>>546
UNIX USERの特集で興味が沸いたんだけど、
他に書籍か雑誌の資料で良いのないかな?

549 名前:login:Penguin mailto:sage [04/09/08 11:27 ID:ktyLyrud]
>>548
とりあえずム板ののひょーんスレでも覗いてみたら?



550 名前:login:Penguin [04/09/08 15:23 ID:wSTR0Xhj]
GTK2のプログラムをライブラリ化しようとしてautomakeやautoconfを使ってconfigureを作ろうと
したのですが、
gtk/gtk.h: そのようなファイルやディレクトリはありません
というエラーがでます。自分の手でMakefileを書いた時にはこんなエラーは起きなかったのですが
Makefile.amやconfigure.acに何か特別に書かなければならないことがあるのでしょうか?

551 名前:550 [04/09/08 17:39 ID:wSTR0Xhj]
自己レス
できた。三時間ぐらい調べるのにかかってしまった。。。

configure.acに
AM_PATH_GTK_2_0(2.0.0,, [AC_MSG_ERROR(Test for GTK failed.)])
とか書いてやると、ライブラリパスやらヘッダパスやらがGTK_CFLAGSやGTK_LIBSに定義される。
それをMakefile.amに
INCLUDES = @GTK_CFLAGS@
LIBADD = @GTK_LIBS@
と書けばOK。GTKの他にgtkglextとかを使いたいのなら/usr/share/aclocalにあるgtkglext.m4の
しょっぱなにあるコメント欄を見て、GTKと同じようにマクロを呼び出してMakefile.amにパスを書き込む。

552 名前:login:Penguin mailto:sage [04/09/08 18:16 ID:ROF7GWcX]
>>549 さんきゅ。前の名前であったのね。
|【GUIライブラリ】wxWindowsでのひょーん
pc5.2ch.net/test/read.cgi/tech/1052186697/l200

553 名前:login:Penguin mailto:sage [04/09/08 19:55 ID:aC9UlW7m]
PKG_CHECK_MODULES() もあり。

554 名前:546 mailto:sage [04/09/09 06:22 ID:krUgg33f]
>>548
wxWidgetsのソースをダウンロードすると、
たくさんのサンプルがついてるので、それが結構参考になると思います。
中には古いのがあったりするのですが、大よその概念はつかめると思います。
米AOLのインストーラーとかに使われてて、Windows/Linux/Mac OS Xでいけてるみたいなので、
商用レベルにはなっていると思います。

555 名前:login:Penguin mailto:sage [04/09/11 22:08:37 ID:2jzJ2iMt]
華麗に555げっと。

556 名前:login:Penguin mailto:sage [04/09/15 00:00:14 ID:XXdKtByK]
widget やシグナルのことを知りたくて、The Glib Object system っていう
チュートリアルを読んでるんですが、くじけそうです・・。

gtk のチュートリアルと Glib Object systemのチュートリアルの間を埋める
ようなレベルの説明って、どこかにないでしょうか?
以前、GTKハッキングレポート っていうそれっぽいページがあったと思ったんだ
けど、今探すとなくなってるみたいだし・・・。

557 名前:煽りイカ [04/09/15 02:24:11 ID:S7MStXnB]
Gtk+はANSI-C言語、QtはC++言語でライブラリが用意されていると言う
解釈でよろしーでしょうか?
オブジェクト指向で開発する場合には、後者の方が使い易いんでしょーか?

GtkのマニュアルをPC上で読んでいたら目眩がしてきたので、KDEのように
本になって出てないでしょうか?あったら買いたいです。

558 名前:login:Penguin [04/09/15 03:05:40 ID:VtuDal+L]
>>556
web.archive.org/web/20040114094302/ghr.shalab.phys.waseda.ac.jp/ghr/gtk_hacking_report.html
まぁ自前のWidgetというかオブジェクトを作るとかしない限りこういうことは知らなくても問題ないよ。

>>557
英語でよけりゃ
www.nostarch.com/frameset.php?startat=gnome_foundation
が網羅的でよさそうな気がする。amazon.co.jp でも買えるよ。洋書版オライリーを扱ってる本屋にも置いてあるかもしれない。
Gtk+の書籍って日本語英語問わずチュートリアル的な本がほとんどなので、リファレンス的
なものとなるとこれ以外の選択肢はない。

559 名前:556 mailto:sage [04/09/15 17:57:59 ID:XXdKtByK]
>>558
いいサイトをありがとん。

>まぁ自前のWidgetというかオブジェクトを作るとかし
人のプログラム見てて、まさにこれをしてたので調べてます。
気がつくと gobject のソースの中で遭難中。




560 名前:煽りイカ [04/09/15 22:46:48 ID:S7MStXnB]
>558
有り難うございます。

561 名前:login:Penguin [04/09/30 18:40:47 ID:ZNjn4MmY]
質問です。

必ずウィンドウ上の何れかのウィジェットがフォーカスを持っているようにしたいのですが
どうすれば良いか分かりません。

例えば、1つのボタンを貼り付けただけのウィンドウを作ったとします。
これを実行してタブを押すと、そのたびにボタンがフォーカスを得たり失ったりします。
ボタンがフォーカスを持っていないときはいったい誰がフォーカスを持っているのでしょうか?
あるいは誰も持っていない状態というのがある?

どちらにしても、この状態をなくすにはどうすれば良いのですか。
教えてください。

562 名前:login:Penguin mailto:sage [04/09/30 18:48:03 ID:SmK1xNom]
>>557
Qtはいいぞぉ。あそこまで洗練されたライブラリは
そうそうあるもんじゃない。

563 名前:login:Penguin mailto:sage [04/09/30 20:38:08 ID:e5kfAN1B]
>>561
何もしなくてもそんな状態じゃないけど…

564 名前:561 [04/09/30 20:50:54 ID:9AhHdXeZ]
>>563

書き忘れていたんですが、1.2の話です。
2系だと平気なんですね、きっと。

565 名前:login:Penguin mailto:sage [04/09/30 22:16:53 ID:e5kfAN1B]
>>564
ウィンドウウィジットの GTK_CAN_FOCUS フラグを落す。

バージョンによって違うとは…。


566 名前:561 [04/10/01 10:45:06 ID:TSUAcXDI]
>>565

だめですた。 orz
でも、ありがとうございました。
もうちと、自分で試してみます。

567 名前:login:Penguin mailto:sage [04/10/01 20:39:26 ID:HB0CGb7q]
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
GTK_WIDGET_UNSET_FLAGS(window, GTK_CAN_FOCUS);


568 名前:login:Penguin mailto:sage [04/10/02 19:02:32 ID:vwpDQWM7]
電光掲示板みたいに文字が流れる
プログラム作りたいんですが
参考になるソースしりません?
バージョンはGtk+2.2 です

569 名前:364 mailto:sage [04/10/02 23:52:42 ID:lvcJFuth]
「電光掲示板みたいに」が、ドットもそれらしく表現ということだと
GdkPixbufあたりをつかって自前で画像を描画することになるかと。
いったん文字をDrawableに描画してgdk_pixbuf_get_from_drawableで
イメージを取得するとか。



570 名前:login:Penguin mailto:sage [04/10/03 00:02:22 ID:px/BonVe]
>>569
ありがとうございます。
さっそく、それらしいソースあさってみますね。
描画ソフト関係をあされば大丈夫かな?

571 名前:login:Penguin [04/10/03 22:52:41 ID:b13aFboP]
質問お願いします。

テキストエントリを使って、文字列を取り込みたくて
const char *str = gtk_entry_get_text(entry);
wcahr_t wstr[100];
mbstowcs(wstr,str,100);
としたのですが、テキストエントリに"aaa"と入力して取り込むと正常に
wstrの中身が"aaa"となるのですが、"あああ"と入力して表示させると
文字化けが発生します。
mbstowcsの返り値を調べると-1になっているので正しく変換できてないと
思われるのですが。
もしかしたら、テキストエントリは2バイト文字は扱えないのですか?
どなたか教えてもらえないでしょうか。

572 名前:login:Penguin mailto:sage [04/10/03 22:59:18 ID:NMHtHT7k]
setlocaleとか実行してるか?

573 名前:571 [04/10/03 23:22:17 ID:b13aFboP]
>>572
はい、setlocale(LC_ALL,"ja_JP.eucJP")とやっております。

574 名前:login:Penguin mailto:sage [04/10/03 23:37:40 ID:NMHtHT7k]
gtk_entry_get_textの返り値はUTF-8ではないかと。
それをEUCモードのmbstowcsで実行するからエラーになると。

setlocaleでUTF-8を設定するか(これは他の関数で面倒なことになりそう)
g_locale_from_utf8でUTF-8からカレントロケールに文字列を変換するか。

575 名前:571 mailto:sage [04/10/04 00:04:10 ID:5lyoB5Xl]
>>574
なるほど、そういうことでしたか。
私の作っているプログラムではeuc形式のファイルからの文字列の
読み込みもやらなければならないので、後者の方でやってみます。
アドバイスありがとうございます。

576 名前:login:Penguin [04/10/04 00:14:40 ID:1mgqe0pP]
>>571
char *str = gtk_entry_get_text(entry);
char *locale_str = g_locale_from_utf8(str);
wchar wstr[100];
wprintf("%s", wstr);
wbstowcs(wstr, str, 100);

strの中身はUTF-8 まんまなので
まずiconvなりglibの文字列変換関数(実質iconvのラッパ)で適当に変換する

577 名前:login:Penguin [04/10/10 18:05:08 ID:zn9N0S8U]
GTK+ 2.4.11 Released

578 名前:login:Penguin [04/10/13 08:07:25 ID:0RBMkwen]
GLib リファレンスマニュアル (2.4.7版)
www.gnome.gr.jp/docs/glib-2.4.x-refs/glib/

GObject リファレンスマニュアル (2.4.7版)
www.gnome.gr.jp/docs/glib-2.4.x-refs/gobject/

579 名前:login:Penguin mailto:sage [04/10/13 08:50:09 ID:fnawd3gt]
gtkはCで書かなきゃいかんのがめんどい



580 名前:login:Penguin mailto:sage [04/10/13 09:10:05 ID:EBUt+ZnU]
>>579
pygtkでも使え

581 名前:login:Penguin mailto:sage [04/10/13 10:32:39 ID:fnawd3gt]
C++がいい

582 名前:login:Penguin mailto:sage [04/10/13 12:16:04 ID:i0k9Byx8]
GTK+ - Language Bindings
www.gtk.org/bindings.html

583 名前:login:Penguin mailto:sage [04/10/21 22:11:24 ID:nRPw1OZd]
ウィンドウのタイトルを右クリックするとメニューが出てくるように、
ウィンドウマネージャで設定されています。
この時、gtkで一部のウィンドウのメニューを違うメニューにしようと思ったのですが、
_GtkWindowにも_GdkWindowにも操作できるような要素が見当たりませんでした。
どなたかメニューを操作する方法をご存知の方いらっしゃいませんでしょうか・・・


584 名前:login:Penguin mailto:sage [04/10/22 22:33:32 ID:eUY5i1x7]
ウィンドウタイトルの所で出るメニューは、作ってるアプリの管轄外だと
思うんだけど。違う?

585 名前:login:Penguin mailto:sage [04/11/07 00:08:40 ID:A8KZGfM+]
ウィンドウタイトルないウィンドウマネージャもあるしね。
もし可能だったとしてもアプリケーションが操作すべき場所じゃないと思う。

586 名前:login:Penguin mailto:sage [04/11/09 02:11:59 ID:R4ut9ZNk]
Tutorialみてbutton押すとlabelの表示が変わるぐらいは出来るようになったのですが、

gtk_label_set_text(GTK_LABEL(label), "test1");
sleep(1);
gtk_label_set_text(GTK_LABEL(label), "test2");

みたいに処理に従ってlabelを書き換えるようなのは、
どうすればいいのでしょうか?上のだと、表示されるのはtest2だけで……。

587 名前:login:Penguin [04/11/09 06:18:13 ID:t6yHsCJv]
>>586
#!/usr/bin/env python

import pygtk; pygtk.require('2.0')
import gtk, gobject

count = 0
def greet(widget): print 'Hello!'
def deal_timeout(button):
global count
count += 1
button.set_label(str(count))
print button
if count < 10:
return True
else:
return False

button = gtk.Button(str(count))
button.connect('clicked', greet)

#timer = gtk.timeout_add(1000, deal_timeout, button)
timer = gobject.timeout_add(1000, deal_timeout, button)

window = gtk.Window()
window.connect('destroy', lambda w: gtk.main_quit())
window.set_border_width(10)
window.add(button)
window.show_all()

gtk.main()


588 名前:login:Penguin [04/11/09 07:49:39 ID:t6yHsCJv]
>>586
>どうすればいいのでしょうか?上のだと、表示されるのはtest2だけで……。
Windowがマップ(show)されるまで、Labelは表示されないよ。
set_textてコールバックのなかでやってる?



589 名前:login:Penguin [04/11/09 07:50:30 ID:t6yHsCJv]
>>586
ごめん、ボタンラベルではなくだだのラベルを書き換えだね。
それから、pygtkで済まん。
#!/usr/bin/env python

import pygtk; pygtk.require('2.0')
import gtk, gobject

count = 0
def deal_timeout(label):
  global count
  count += 1
  label.set_text(str(count))
  if count < 10:
    return True
  else:
    return False

label = gtk.Label(str(count))

window = gtk.Window()
window.connect('destroy', lambda w: gtk.main_quit())
window.set_border_width(10)
window.add(label)
window.show_all()

#timer = gtk.timeout_add(1000, deal_timeout, label)
timer = gobject.timeout_add(1000, deal_timeout, label)

gtk.main()




590 名前:login:Penguin mailto:sage [04/11/09 07:53:30 ID:R4ut9ZNk]
>>587
うっと、その例だと、

count += 1
button.set_label(str(count))
print button
count += 1
button.set_label(str(count))
print button

と二度続けてset_labelしたときに順次表示したいという気持ちで。

591 名前:login:Penguin [04/11/09 08:33:34 ID:t6yHsCJv]
質問の意図が分かった。
おそらくmainループに制御が帰らないから中間のset_textは
反映されないのだと思う。
mainスレッドと別スレッドでset_textすればうまくいくのでは。
def callback(label):
# bigin mainとは別スレッド
global count
label.set_text(str(count))
count += 1
time.sleep(1)
label.set_text(str(count))
# end mainとは別スレッド

592 名前:login:Penguin mailto:sage [04/11/09 08:41:42 ID:Zkj7YPcz]
>>590
何をしたいのかもっと具体的に書いた方がいいのでは?

593 名前:login:Penguin [04/11/10 05:52:19 ID:ppRcKd5W]
>>590
これでどう?
別スレッドによる方法は、よした。こちらの方が簡単。
要は、set_textしたあとmain_iterationを必ず呼ぶ。
下のコード参照。


594 名前:login:Penguin [04/11/10 05:52:58 ID:ppRcKd5W]
>>590
#!/usr/bin/env python

import pygtk; pygtk.require('2.0')
import gtk, gobject, time

def callback(button, label):
  button.set_sensitive(False)
  for i in range(100):
    time.sleep(i%5+1)
    label.set_text(str(i))
    while gtk.events_pending():
      gtk.main_iteration()
  button.set_sensitive(True)

label = gtk.Label('-')
button = gtk.Button('Go')

vbox = gtk.VBox(spacing = 5)
vbox.pack_start(label)
vbox.pack_start(button)

window = gtk.Window()
window.connect('destroy', lambda w: gtk.main_quit())
button.connect('clicked', callback, label)
window.set_border_width(10)
window.add(vbox)
window.show_all()

gtk.main()


595 名前:login:Penguin mailto:sage [04/11/17 04:22:22 ID:YsKYfmVj]
gtk2-perlいじってみようと思うんですが、
gtk_hoge は Gtk2::hogeと言うので安直に
Gtk2::set_locale();
してみたら
Usage: Gtk2::set_locale(class)
と出る。とりあえず
Gtk2::set_locale('euc-jp');
してみると実行出来るが文字化けなおりまへん。
すみまへんが、どなたかぷりーず救いの手。

596 名前:login:Penguin mailto:sage [04/11/17 07:45:19 ID:iY7axWLS]
>>595
www.gnome.gr.jp/docs/porting-apps-GNOME-2.0/ar01s10.html

597 名前:login:Penguin mailto:sage [04/11/17 09:53:38 ID:YsKYfmVj]
>>596ありがとん。
use utf8;
足してutf-8で書くだけでしたか。
けどこりゃ面倒だな。。。

598 名前:login:Penguin [04/12/03 19:00:50 ID:GiyN6pXi]
GTK+ 2.4.14 Released

599 名前:login:Penguin [04/12/04 18:37:51 ID:6LgKh+yC]
厨房な質問ですが教えてください。
テキストボックスに日本語入力できません。
日本語の文字列をコピペしても文字化けします。
gtk_set_locale(); の他に
setlocale(LC_ALL,"ja_JP.eucJP"); なども試してみましたが効果ありませんでした。
gtk+ 1.2 なら問題なく日本語が通るのですが、gtk+ 2.4では何か特別なことをする必要があるのでしょうか。
テキストエントリーなら普通に日本語入力できます。

GtkWidget *text; //文字化けする
text = gtk_text_new(NULL, NULL);
gtk_text_set_editable(text, TRUE);

GtkWidget *entry; //文字化けしない
entry = gtk_entry_new();
gtk_editable_set_editable(entry, TRUE);

FAQに違いないと思うのですが、どう調べても解決できません。
#メモ帳程度ならすぐできると思ったのですが、そんな甘いものではないのですね。



600 名前:login:Penguin mailto:sage [04/12/04 18:59:58 ID:VErRj59z]
>>599
www.gnome.gr.jp/docs/porting-apps-GNOME-2.0/ar01s10.html







[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<255KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef