私は、Tkhtmlウィジェットとテキストウィジェットをttk :: panedwindowの上に重ね合わせて表示するスクリプトを作成しています。両方のウィジェットは垂直方向と水平方向にスクロール可能です。ユーザーがテキストウィジェットをクリアできるようにするボタンもあります。Tkを使ってウィンドウサイズを設定するタイミングと方法
私は、Ubuntuを実行するラップトップでいくつかの開発を行っています。ウィンドウマネージャーは、2x2配列の4つのデスクトップワークスペースを許可しています。GUIが最初に表示されたとき、下の5分の1が私が使用しているワークスペースから下に出ます。ウィンドウをサイズ変更して画面上に収まるようにするには、画面のサイズを変更する必要があります。
(私は思う)これは、ウィンドウを最初に表示したときにスクリプトを実行できるように、これを行う方法、つまり適切なイベントにバインドする方法をよく知っています。 "適切なイベント"が<Map>
であると信じていましたが、ウィンドウが最初にマップされたときに、2つのウィジェットの高さはゼロでした([winfo height]
によって報告されています)。私は<Expose>
へのバインドを試みましたが、これはうまくいくようです([winfo height]
は賢明な数字を返します)。
質問1:どのイベントをバインドする必要がありますか?
結合火災は、[wm geometry]
は815x1029 + 49 + 24などのジオメトリを報告し、[winfo height]
600及び366、及び[wm screenheight]
のような2つのウィジェット二高さをレポートが返さIは、様々な他のビットがある知っている800の高さとGUIの中にいくつかの部分がありますので、最初のレイアウトでは63ピクセルは計り知れません。私は、サイズ変更後に同じ量のスペースが必要であると仮定しているので、815x737 + 49 + 24のジオメトリを要求する必要がありますが、私はスライバー(ほぼ水平のスクロールバー)を次のワークスペースに引き込みます。
私が知っていることは、すべてが画面上にきれいにフィットするとき、ジオメトリは815x717 + 49 + 24でなければならないことを知っています。したがって、「他のGUIのビットと部分 "と呼ばれる。
質問2:ファジーファクターの使用が必要なのは何ですか?
私はUbuntu 12.04.5 LTSでTk 8.6.1を使用しています。私はCompizウィンドウマネージャのバージョン0.9.7.12を使用しています。
更新
それは私がそれがスクロールバーと「クリア」ボタンを占めるだろうと、さまざまなペインではなく、Tkhtmlとテキストウィジェットの高さを見つけるべきことを私を襲いました。ペイン高さは当初は615と409ですが、これは、リクエストの高さを717という希望値にするために、ファッジファクタを20から78に増やす必要があることを意味します。トップレベルを要求する高さを予測する方法はありますか画面を埋めるためにトップレベルを得るために、私のパンされたウィンドウを含んでいますか?
'winfo height'はウィンドウが完全に表示されるまで感知可能な数字を返しません。 'winfo reqheight'を使って、ウィンドウが表示される前にウィンドウの要求された高さを取得できます。 –
@BradLanam私は '
@BradLanam '[winfo reqheight]'は私が特定の高さを要求しないので役に立たないものを返しません。 – nurdglaw