問題タブ [pygtk]
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 - pygtk グレードの質問: この単純なスクリプトが機能しないのはなぜですか?
私は、Grade を使用して UI をまとめる小さな pygtk アプリケーションを作成しています。すでに機能するウィンドウをいくつか作成しましたが、何らかの理由でこのウィンドウが機能しません。次のトレースバックを取得します。
test.py の内容は次のとおりです。
そして、ここに空き地ファイルtest.gladeがあります:
奇妙なことに、signal_autoconnect(self) 呼び出しを実行すると、ウィンドウが開きます。しかし、その呼び出しを「self.on_TestClass_destroy(self, None, None)」に置き換えると、同じ NameError 例外が返されます。
正常に動作する他のいくつかのウィンドウ クラスを作成したため、これが動作しない理由が本当にわかりません。
次のコードは、ここの誰かのために機能していますか?
python - 多くのウィンドウがある空き地プロジェクトを処理する方法
現在、16 個のウィンドウ/ダイアログがあり、約 130KB の PyGTK/glade アプリケーションに取り組んでおり、最終的には約 25 個のウィンドウ/ダイアログがあり、約 200KB になります。現在、すべてのウィンドウを 1 つのモノリシック グレイド ファイルに格納しています。ウィンドウを実行すると、次のように呼び出します...
各ウィンドウを独自のグレードファイルに分割する方が良いのではないかと思います。25 個のウィンドウ/ダイアログを含む 1 つのグレード ファイルの代わりに、それぞれ 1 つのウィンドウ/ダイアログを含む 25 個のグレード ファイルを作成し、次のように呼び出します。
これを行うための最良の方法は何だと思いますか?ある方法は別の方法よりも多くのリソースを消費しますか? 個々のグレード ファイルに移動することの良い点の 1 つは、ウィジェットの名前付けが簡単になることです。たとえば、すべての OK ボタンに「windowxyz_ok」という名前を付けていますが、単に「ok」に変更することもできます。物事をよりシンプルにします。欠点は、さまざまなウィンドウに変更を加えるのが少し不便なことです。
私はあらゆる議論にオープンです。ありがとう!
macos - Mac OS X の GTK で alt/option キーが押されているかどうかを検出するにはどうすればよいですか?
Mac OS X の GTK で、マウスのドラッグ中に Alt/Option キーが押されたかどうかを検出したいと考えています。私は pygtk を使用しています。通常、alt を押し続けると MOD1_MASK が event.state に追加されますが、alt は event.state にまったく影響しません。キーを押すイベントでは、alt は gtk.keysyms.kana_switch として表示されますが、ユーザーが別のアプリケーションで alt を押して、クリックして私のものに切り替える可能性があるため、これは私の目的には十分ではありません。
alt/option が event.state の修飾子として表示されるような設定はありますか? または、キーダウン イベントが別のアプリケーションに送信された場合でも、キーが現在押されているかどうかを検出する方法はありますか?
python - pyGTK ラジオ ボタン
さて、私は GTKとPython の初心者ですが、必要な情報を掘り下げることができませんでした。基本的に私が持っているのはラジオボタンのリストであり、どれがチェックされているかに基づいて、ボタンを別の機能に接続する必要があります。すべてのラジオ ボタンを作成してからsget_active()
、各ボタンをチェックする嫌な if/else ブロックを作成してみました。問題は、同じボタンが毎回 true を返すことです。何か案は?
使用中のコードは次のとおりです。
python - ウィジェットのスクロール可能な列に使用する GTK ウィジェットの組み合わせは?
私は PyGTK を使用して、次のことを行うウィジェットの組み合わせを考え出そうとしています:
- 列に無数のウィジェットを追加させてください
- 下からはみ出るものに到達するための垂直スクロールバーを提供する
- ウィンドウのサイズが変更されたときに、利用可能な水平スペースを埋めるようにウィジェットの幅を調整します
ありがとう - GTK は初めてです。
python - 初心者レベルの Python スレッドの問題
Python (pyGTK を使用) での GUI 開発の初心者として、私はスレッド化について学び始めたばかりです。自分のスキルをテストするために、スタート/ストップ ボタンを備えたシンプルで小さな GTK インターフェイスを作成しました。目標は、クリックするとスレッドが開始され、GUI の応答性を維持しながら、テキスト ボックス内の数値をすばやくインクリメントすることです。
GUI は正常に動作していますが、スレッドに問題があります。単純な問題かもしれませんが、私の心はその日の揚げ物のことです。以下に、最初に Python インタープリターからのトラックバックを貼り付け、次にコードを貼り付けました。http://drop.io/pxgr5idにアクセスしてダウンロードできます。リビジョン管理に bzr を使用しているので、変更して再ドロップしたい場合は、変更をコミットしてください。また、コードをhttp://dpaste.com/113388/に貼り付けています。これは、行番号が含まれている可能性があるためです。このマークダウンは頭痛の種です。
更新 1 月 27 日 15:52 EST: 少し更新されたコードは次の場所にあります: http://drop.io/threagui/asset/thread-gui-rev3-tar-gz
トレースバック
コード
python - GTK を使用してワークスペース サイズ (タスクバーを差し引いた画面サイズ) を見つける
タスク バーを覆う (または覆われる)ことなく、また最大化されることなく、デスクトップ全体を占めるメイン ウィンドウを作成するにはどうすればよいでしょうか。画面全体のサイズを見つけて、それに応じてメインウィンドウを設定できます:
ただし、ウィンドウの下部はタスク バーで覆われています。
python - アプリケーションごとに GTK テーマで定義された pixmap 背景を無効にする
私たちの (オープン ソース) フルスクリーン テキスト エディターではgtk.Window
、gtk.Fixed
、 などの背景色をカスタム カラーに変更しています。これは正常に動作しますが、一部のGTKテーマ (例: Mac4Lin ) は、一部のウィジェットの背景色ではなく背景ピックスマップを定義します。これらのウィジェットの modify_bg() メソッドを呼び出しても、これらの背景ピックスマップは消えません。
bg_pixmap[NORMAL] = 'blabla.png'
でピックスマップを設定できることと、gtk.rc_parse_string() で独自の gtkrc オーバーライドを定義できることを知っています。しかし、設定を解除する方法がわかりませんbg_pixmap[NORMAL]
。
それで、どうすればいいですか?
gtk - GTK+ での FileChooserButton の使用
ファイル選択ボタンを適切に使用する方法を見つけようと懸命に努力しています。のリファレンス マニュアルを読んでも、これGtkFileChooserButton
までのところ役に立ちませんでした。の文書化されていないシグナルファイル セットに接続して、ここから呼び出してみましたが、動作が非常に不安定なようです。ユーザーがボタンをクリックしてファイルを選択すると、今のところ問題なく動作します。GtkFileChooserDialog
GtkFileChooser
GtkFileChooserButton
get\_filename()
しかし、同じボタン (既にファイル名が設定されています) をクリックした後、ユーザーが気が変わって「ファイルを開く」ダイアログを閉じた場合get\_filename()
returns None
( Pythonタイプ、私は pygtk を使用して記述します)、ファイルは設定されたままです。さらに奇妙なことに、後で別のシグナルハンドラー内からそのボタンで get_filename() を呼び出すと、ファイル名は以前にユーザーが設定したものに戻ります。ちなみに、ダイアログボックスを閉じるだけで問題が発生するようで、「キャンセル」を押しても問題ありません。