【GUI】wxWidgets(旧wxWindows) その2【サイザー】
xrcで日本語って出来るかな?
cp932、utf8、sjis、どれもだめなんだけど・・・
ちなみにwxPerlです。
確かできたと思ったけどな。
どのみちちゃんと書くときはgettextで変換するので
xrcには日本語書かないけど。
954 :
952:2006/06/25(日) 21:27:28
>>953 ありがとう。
WinとMacで試してるけど、どっちもXRCのパースで失敗する。Load()。
日本語だけでいいんだけど、gettext使うかな・・・
前に一度やったんだけど、エディットがめんどうで・・・
サクラでUTF-8変換!
956 :
953:2006/06/27(火) 04:43:25
>>954 できると言った手前、実はできなかったら申し訳ないので試した。
手元のプログラムでメニューの&Fileを「ふぁいる(&F)」に書き換えて保存。
→ちゃんと出た。少なくともロードに失敗するということはない。
xrcファイルのエンコーディングはUTF-8。
wxWidgets 2.6.2 (2.6.3じゃなくて済まぬ)のunicodeビルド。
952氏がxrcを何で作ってるか知らないけど、手で書くならUTF-8以外を使う場合は
エンコーディングをちゃんと指定しないとだめだよ。
wxWebKit いいね!
958 :
デフォルトの名無しさん:2006/07/21(金) 23:19:02
wxPython2.6を使ってwxListCtrlでリスト作って
リストある行をSetItemTextColour()、SetItemBackgroundColour()
を使って色をつけようとしたが、全く色が変化しない。
SetTextColour()、SetBackgroundColour()は動作しているのだが
行指定のAPIは実は宣言だけで使えない??
誰か教えて。
wxPython付属のサンプルプログラムからコピペ
item = self.list.GetItem(1)
item.SetTextColour(wx.BLUE)
初期化するとき、LC_VIRTUAL を指定していると
OnGetItemAttr()
を呼びにいくから、それを再定義して、アトリビュートを返せば
色が変わります。
VIRTUALじゃないばあいは、 >959さんのでいいと思われ。
画像を表示したいんですが、実行ファイルに組み込むにはどうすればいいですかね?
外部ファイルを実行時にロードとかじゃなく、コンパイル時に組込みたいんですが。
(Winのリソースみたいな感じ?)
あ、わかったかも。すまそ。
XRCed wxXmlResource 辺りか。
わからん。
誰か教えてください。。。
xpm形式をリンク
965 :
962:2006/07/27(木) 10:36:27
>>964 ありがとう!
むちゃくちゃ簡単にできますた。
今までXML利用したプログラミングしたことがなかったので、
>>962の方法では死ぬかと思いました。
こちらのほうは一から勉強します。
2.7.0来てるな
ぅをっ!
積極的に新しいパッケージを突っ込んで行くFedoraでさえまだ2.4と2.6の両方を用意しているというのに。
ところで君たち、RADツールとしては何を使ってますか?
俺はwxGlade以外使ったこと無いんだけれども、比較検討した人いる?
wxGladeのボタン等の張り付き方は何とかならんものか・・・
969 :
デフォルトの名無しさん:2006/08/29(火) 17:09:05
frameとpanelとdialogって何が違うんでしょうか?
更新出来る画像領域とボタンのある形を作ろうとwxGladeを実行しても、
画像がStaticBitmapしか見付からないんですが、動的なbitmapは無いんでしょうか?
GUIプログラミング自体初めてで、
解説サイトがさらっと通り過ぎてる所から進めません…
>>969 >frameとpanelとdialogって何が違うんでしょうか?
何が違うって、モノが違う。
あえて概要を言うなら、ふれーむは典型的なウインドウ、パネルは平べったい領域単体、ダイアログはパネルのようなウインドウのようなもの。
正確には↓読め。
http://www.wxwindows.org/manuals/2.6.3/wx_contents.html >更新出来る画像領域とボタンのある形を作ろうとwxGladeを実行しても、
>画像がStaticBitmapしか見付からないんですが、動的なbitmapは無いんでしょうか?
そういう特別なwidgetは(少なくともwxGladeには)無い。
パネルなどに直接描画する。
>そういう特別なwidgetは(少なくともwxGladeには)無い。
ないんですか…、xrcedとかでもやってみましたが、それらしいのはありませんでした。
で、言われたとおりにパネルに描こうと思ったんですが、
パネルのbitmapタイルへのポインタを取得するようなメンバ関数も、
上書きするようなメンバ関数も見当たりません…
manualを探してみた所、wxImageが目的の物に近い気がするのですが、これはGUI上に置けないor Panelに描けないんでしょうか??
>>971 君と僕とは共通の言葉で話ができない気がする。
付属のsampleは見たか?
wxGladeで全てのWidgetsを配置できるわけじゃないので
コード自分で書いて。
初めてwx触ってみたときに、イメージデータを適当に
フレームか何かのメンバにしてしまってハマったことがあったな。
その上にはサイザーとパネルが貼り付いているものだから、
フレームを拡大縮小している瞬間だけ画像がチラチラ見えたりしたっけ。
なんか、Linux上とWindows上で挙動がちがったりして。
何年か前の話だから何か勘違いしてるかもしれんが。
とにかくその延長で作ったブツのソースを今見たが、
(汚いからよくわからんが)ごちゃごちゃとメンバを持たせた
独自のパネルを作って差し替えてるな。
ちなみに俺はC++を念頭に書いてるが、Pythonなどはよくわからん。
wxのマクロを使う糞古臭い設計はなんとかならんのか。
今更こんなもん使う気にならん。
グダグダ口から糞たれてねえで、てめえでどうにかしな。
977 :
デフォルトの名無しさん:2006/09/01(金) 16:15:55
1.wxSocketServerをlisten
2.イベントハンドラにwxSOCKET_INPUTを登録
3.クライアントから接続しデータを送信
4.一度目のデータ処理を待たずに2度目の送信を行う
と
サーバサイドでwxYield called recursivelyというAssertが出る
wxSocketBase::Read()でYield()を呼び出していることが原因
socketサンプルをコンパイルしても出るらしい
回避方法情報募集中
>>975 10年くらい続いてるツールキットだから仕方なかろう。
wxNG作りたいねという話はときどきMLで出るが、じゃあ誰が作業するんだ、
そんな余力ねーべ、という話に大抵なる。
つまり
>>976 ってこった。
MFCの要領が解かっていればすぐに使える、というメリットもある。
MFCから逃れたくてGUIツールキットを探してる人には
あまりうれしくないけどね。
>>982 wx Next Generation == 次世代wx
NGは新しいものには何でも使われる定番の名前。
>>983 ありがとう。
wxNGをメーリングリストのログやフォーラムを検索してもほとんど言及がないし
唐突に出てくるからNGは一般的な言葉な略語なんだろうなとは思ったが、それだけに
うまくNGの意味を検索する術を思いつかなかったw
985 :
978:2006/09/02(土) 07:46:30
ちょっとわかりずらいので書き直し
HTTPサーバを想像してください
コードはサンプルのものですので、見ればわかります
1.サーバ作成
EVT_SOCKET(SERVER_ID, MyFrame::OnServerEvent)
m_server = new wxSocketServer(addr);
m_server->SetEventHandler(*this, SERVER_ID);
m_server->SetNotify(wxSOCKET_CONNECTION_FLAG);
m_server->Notify(true);
サーバを作成し、Acceptイベントを登録しています
2.Accept
void MyFrame::OnServerEvent(wxSocketEvent& event)
sock = m_server->Accept(false);
sock->SetEventHandler(*this, SOCKET_ID);
sock->SetNotify(wxSOCKET_INPUT_FLAG | wxSOCKET_LOST_FLAG);
sock->Notify(true);
接続要求を受け入れ、受信イベントを登録しています
3.データ受信
void MyFrame::OnSocketEvent(wxSocketEvent& event)
wxSocketBase *sock = event.GetSocket();
sock->Read(&c, 1);
受信要求があればそれぞれのソケットにReadを掛けます
この時、クライアントから同時に複数の接続を行うと、それぞれが別スレッドとしてイベント化されます
Readがほぼ同時に別のソケットに対して呼ばれるのですが、イベントハンドラはMyFrameのもので同一です
この時、Readは内部でwxYield(GUI更新)を呼び出します
wxYieldは1度の関数呼び出し中に2度以上呼んではいけない仕様になっています
そこで「wxYield called recursively」というAssertを出してエラー終了します
990ぐらいで次スレ立てれば十分なペースかなあ?
987 :
デフォルトの名無しさん:2006/09/03(日) 19:01:47
てst
いや980超えたらもう落ちるだけだろ
立てられるうちに立てとくべきだ
お前ら開発環境ってどうしてる?
KDevelop
「開発しない」という選択
>>990 おれはGNOME派だが、KDevは乙だと思う。
でもやっぱり使ってないけど。
おれはwxGlade + Emacs (+ 諸々のUNIXツール)
wxGladeとかってSizerが激しく使いにくいんだけどどうにかならんの・・・?
そんなわけでwx-DevC++で作って移植してる。
余計面倒なことも多々あるけど;
>>989 最近使い始めたんだが、wxGlade/VS2005/Eclipse/poEdit。
アクセラレータの自動登録って動いてないのかな?
wxGladeも自分で手を入れたいぐらい、機能が動いていない。
DialogBlocksがイイヨ
>>995 有料か。でもタイトルの文字消すぐらい、誰でもできるんじゃない?
1000 :
デフォルトの名無しさん:2006/09/09(土) 14:27:04
日テレはルパンにひどいことしたよね(´・ω・`)
1001 :
1001:
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。