MS Word 風のコンボ ボックスをアプリケーションに追加して、ユーザーがフォント サイズを変更できるようにしています。セットアップコードは次のとおりです。
sizeBox = gtk.combo_box_new_text()
for size in xrange(MIN_FONT_SIZE, MAX_FONT_SIZE+1):
sizeBox.append_text(str(size))
def UpdateFontSize(c, box):
newSize = box.get_active_text()
if newSize:
self.textViewer.SetFontSize(int(newSize))
print sizeBox.get_active_text()
sizeBox.connect("changed", UpdateFontSize, sizeBox)
プログラムを実行し、コンボ ボックスで選択したエントリを変更しようとすると、次のようになります。
None
OutNav.py:876: GtkWarning: gtk_combo_box_get_active_text: assertion `GTK_IS_COMBO_BOX (combo_box)' failed
newSize = box.get_active_text()
そのため、get_active_text は外側のスコープで正常に動作しますが、ComboBox をコールバックへの引数として指定すると、突然動作が停止します。ここで何が起こっているのか誰か教えてもらえますか? (どうやら gtk.combo_box_new_text は非推奨であるため、ComboBoxText を使用したかったのですが、何らかの理由で PyGTK 2.24 のディストリビューションには含まれていません)