読者です 読者をやめる 読者になる 読者になる

PyGTKでスピンボタン(スピンエディット)を使う

Python PyGTK

PyGTKでスピンボタン(スピンエディット)を使うにはSpinButtonクラスを使います。
値をintで取得する場合はget_value_as_intメソッドを呼び出します。
set_rangeで値の範囲を指定、set_incrementsでインクリメント量を指定します。

gtk_spinbutton.py

# coding: utf-8
import pygtk
pygtk.require('2.0')
import gtk


class MyApp(object):
    def __init__(self):
        self.window = gtk.Window()

        # スピンボタン
        self.spinbutton = gtk.SpinButton()
        self.spinbutton.set_range(-10, 20)  # 値の範囲を-10〜20に設定
        self.spinbutton.set_increments(1, 10)  # インクリメント量の設定,通常:1,中ボタン:10
        self.spinbutton.set_value(5)  # 値を5に設定

        # OKボタン
        self.button_ok = gtk.Button('OK')
        self.button_ok.connect('clicked', self.on_button_ok_clicked)

        # レイアウト用ボックス
        self.vbox = gtk.VBox()
        self.vbox.add(self.spinbutton)
        self.vbox.add(self.button_ok)

        self.window.add(self.vbox)
        self.window.connect('delete-event', self.on_delete_event)

    def on_delete_event(self, window, event, data=None):
        """ウィンドウ閉じる
        """
        gtk.main_quit()
        return False

    def on_button_ok_clicked(self, widget, data=None):
        """ボタンクリック
        """
        self.messagebox(u'値は %d です。' % self.get_spinbutton_value())

    def get_spinbutton_value(self):
        """スピンボタンの値を返す
        """
        return self.spinbutton.get_value_as_int()

    def messagebox(self, text):
        """メッセージボックス
        """
        dialog = gtk.MessageDialog(
            self.window,
            gtk.DIALOG_MODAL,
            gtk.MESSAGE_INFO,
            gtk.BUTTONS_OK,
            text,
        )
        dialog.run()
        dialog.destroy()

    def main(self):
        # 画面を表示してメインループに入る
        self.window.show_all()
        gtk.main()


if __name__ == '__main__':
    app = MyApp()
    app.main()

実行結果

$ python gtk_spinbutton.py