問題タブ [sizer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 水平 BoxSizers の動的な数を作成する方法は?
画面に表示できる画像の数を計算する関数があります。画面に表示できる画像よりも多くの画像がある場合は、すべての画像が表示されるまで画像のサイズを変更します。
次に、1 つの垂直ボックスサイザーと複数の水平ボックスサイザーでそれらを表示したい!
ボックスサイザーの水平方向の数は動的で、画像の数に応じて 1 つまたは複数になります。
複数のボックスサイザーを定義して、それらを垂直ボックスサイザーに追加するにはどうすればよいですか?
wxpython - wx.GridSizer の個々のセルのサイズを取得するにはどうすればよいですか?
wx.GridSizer
を呼び出した後の個々のセルのサイズを取得できるかどうか疑問に思っていFit()
ます。もしそうなら、どうすればいいですか?
python - wxPython:「スーパー」wx.SpinCtrl、float値、サイザー内のレイアウト
wx.SpinCtrl
浮動小数点ではなく、整数間での回転に制限されています。したがって、フロート間でスピンできるwx.TextCtrl
+wx.SpinButton
コンボクラスを構築しています。コンボが通常とまったく同じに見えるように、プログラムで両方のサイズとレイアウトを設定できますwx.SpinCtrl
。
wx.TextCtrl
親パネルにイベントをキャッチさせたいので、このコンボをからサブクラス化しwx.EVT_TEXT
ます。私のこの議論を改善していただければ幸いです。
からのイベントwx.EVT_SPIN_UP
とwx.EVT_SPIN_DOWN
イベントwx.SpinButton
は両方とも内部実装であり、親フレームはこれらのイベントを考慮しません。
今、私はレンガの壁にぶつかった。私のコンボクラスはサイザーではうまく機能しません。.Add()
コンボクラスをにした後wx.GridBagSizer
、はだけが。wx.TextCtrl
内に配置されますwx.GridBagSizer
。はwx.SpinButton
それ自体で残されます。ただし、wx.EVT_SPIN*
バインディングは非常にうまく機能します。
私の問題はレイアウトです。wx.GridBagSizer
クラスを1つのウィジェットとして扱いたい場合、どのようにクラスを作成すればよいですか?
これが私のコンボクラスコードです:
python - wxPython: wx.PyControl に wx.Sizer を含めることはできますか?
wx.PyControl
を含むことができますwx.Sizer
か?
私が最終的にここでやろうとしていること (フロート値を持つスピナー) は、別の質問で既に回答されていることに注意してください。wx.PyControl
私は、独自のカスタム ウィジェットを作成する必要がある場合に役立つスキルである、内でのウィジェットのレイアウトに特に興味があります。私はすでに CreationCustomControls を読んでいますが、サブクラス内でサイザーを使用していませんでした。wx.PyControl
以下のコードを使用すると、CustomWidget
正しく表示されません。ウィジェットの操作に当てはまるDoGetBestSize
と思うので、まだやっていません。私は実際に の中でそのことをやっています。wx.Sizer
wx.Sizer
CustomWidget
これが私のコードです(サブウィジェット間のイベントバインディング
なし) :
python - wxPython: wx.Panel の子である場合の wx.PyControl レイアウトの問題
これは次の質問の続きです:
wxPython: wx.PyControl に wx.Sizer を含めることはできますか?
ここでの主なトピックは、 a のwx.Sizer
中で aを使用することwx.PyControl
です。子ウィジェットFit()
の周りで問題が発生しました。CustomWidget
この問題は、Layout()
afterを呼び出すことで解決されましたFit()
。
ただし、私が経験した限り、ソリューションCustomWidget
は が の直接の子である場合にのみ機能しwx.Frame
ます。の子になると壊れるwx.Panel
。
編集:以下のコードを使用すると、CustomWidget
その子に合わせてサイズが正しく変更されません。CustomWidget
これは、 (のサブクラスとして)が;wx.PyControl
の子である場合にのみ発生することがわかりました。wx.Panel
それ以外の場合、それが a の直接の子である場合、それはwx.Frame
完全Fit()
です。
コードは次のとおりです。
wxpython - wxPython を使用して、格子状の長方形のコンテナまたはボックスを描画します
全体として、内部に 20 個のスロットがある長方形またはコンテナーを描画したいと考えています。CD コンテナまたはアーカイブのようなもので、CD または本を挿入するための空のスロットがあります。私は wxPython を選択します。この 20 個の水平方向の空のスロットには、レイアウトを作成するための wx.BoxSizer(wx.Horizonal) またはその他のサイザーがあることがわかります。
私の質問は、wx.BoxSizer によって生成されたスペースに (空のスロットを表すために) 「目に見える境界線と灰色の背景」を持たせることは可能ですか? それは不可能だと私には思えます。サイザーは、表示されるサブウィンドウを生成する代わりに、レイアウトのみを行うようです。
それが不可能な場合は、この「ボーダーとカラフルな背景」機能用のスロット ウィンドウ クラスを作成し、20 個のスロット ウィンドウ オブジェクトを作成してサイザーに追加する必要があると思います。次に、本または CD を表す別のウィンドウ クラスを作成し、この CD ウィンドウをスロット ウィンドウに挿入する必要があります。
これは少し奇妙に聞こえます。スロット ウィンドウが必要かどうか、または wx.sizer (または他のサイザー) がスロット ウィンドウと同じ効果を達成できるかどうかはわかりません。
wxpython - wxPythonで手動でサイズを変更せずにwxFrameを更新するにはどうすればよいですか?
wxPythonスクリプトに単純なフレームがありますが、希望どおりに更新されません。
基本的に、フレームは空白で始まります。その後、ユーザーはさまざまなデータセットを選択してグリッド形式で表示できます。データセットが選択されると、スクリプトはグリッドを作成し、それをフレームのサイザーに配置します。問題は、フレームが非常に小さいサイズでグリッドを表示し、サイザーが本来のように(または少なくとも私が期待するように)拡張していないことです。さらに、フレームのサイズを手動で(つまりマウスを使用して)変更すると、サイザーが突然拡大し、フレーム全体がグリッドで埋められます。
フレームのサイズを手動で変更する場合だけでなく、サイザーでグリッドをすぐに拡張するにはどうすればよいですか?
python - wx.GridBagSizer内に要素(パネル)を配置する
グリッドバッグサイザーを使用して、フレーム内に2つのパネルを配置しています。
control_panelをmain_panelの上に配置します(上記のように)。しかし、これは私が得る出力です:
反対を指定したのに、なぜトップパネルがボトムパネルよりもはるかに大きいのかわかりません。(2、5)は上部、(5、5)は下部です。また、サイズを小さくすると奇妙な動作をします。基本的には必要なものが得られます(下の画像を参照)が、再度大きくしたときに比率を維持する方法がわかりません。
ただし、サイズを大きく(少しでも)開始すると、形状と比率が反対方向に劇的に変化することがわかります(下部がはるかに小さくなり、上部がはるかに大きくなります)。
まだこのサイザーを学ぼうとしていて、私が見たどの例でもこの問題を実際に見つけることはできません。また、すべてのパラメーターを試し、いくつかのテストを実行しようとしましたが、ここで何が起こっているのか理解できません。どんな助けでも大歓迎です。
編集:下のコメントを支援するために下の画像を追加しました。
wxpython - wxpython: ネストされたサイザー、および左上隅の小さな四角?
私は wxPython とサイザーを調べようとしており、次の例をまとめました。
これを実行すると、画像のようなウィンドウが表示されます。
誰かが説明できますか、なぜ左上隅に灰色の小さな四角が表示されるのですか?また、コードを実装する正しい方法は何ですか? (ボタンは意図的に色付けされているため、明らかです..)これがプラットフォーム固有の場合に備えて、Ubuntu Lucidを使用しています。
編集:その正方形は明らかにパネル自体ですが、意図したように、サイズが変更されてボタンの「親」にならない理由がわかりませんか?
c++ - ダイアログ(wxDialog)に大きなグリッド(wxGrid)を合わせる
これが私のレイアウトです:
グリッド(比率1)と[OK]/[キャンセル]ボタンバーを含むサイザーがあります
すべてはwxDialogにあります
ここにあります:
問題は、グリッドに含まれる行が多すぎて画面がオーバーフローするため、最終的にダイアログの上部が表示されないことです。ダイアログでFit()を呼び出すときに、その高さを制限する方法はありますか?
私はこのようなものを試しました:しかしSetSizeHints(-1,-1,-1,500);
、SetMaxSize(500,500)
それはうまくいきませんでした。
また、私はそれを試みました:this->SetSize(this->GetSize().GetX(), 500);
、しかし、垂直スクロールバーがグリッドに表示されるため、十分な幅がなく、水平スクロールバーが表示されます。
編集
コンストラクターで私はwxGrid(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize)