3

私はPythonでプログラミングしているときに抱える小さな問題を解決するために、このWebサイトをかなり頻繁に使用しています。今回はどういうわけか自分の状況に合った解決策を見つけることができませんでした。だから、ここに私の問題があります:

gtk.VBoxウィジェットに動的にエントリを追加したい。問題は、それが私が望むように機能しないことです。ボタンがあり、そのアクションはVBoxにウィジェットを追加することです。残念ながら、ウィジェットはウィンドウに表示されません。repaint関数呼び出しのようなものを追加する必要があると思いますが、そのようなものは見つかりませんでした。これが私の問題を示すサンプルコードです:

import gtk

class DynamicVbox:

    def __init__(self):
        self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        self.window.connect("destroy", self.close_application)
        self.window.set_size_request(400,320)
        #a hBox to put the button and the dynamic vBox
        hBox = gtk.HBox(False, 0)

        addButton = gtk.Button("add checkbox")
        addButton.connect("clicked", self.AddCheckButton)

        self.vBox = gtk.VBox(False, 0)
        self.vBox.pack_start(gtk.CheckButton("CheckButton"), True, True, 1)
        hBox.pack_start(self.vBox, True, True, 5)
        hBox.pack_end(addButton, False, False, 5)
        self.window.add(hBox)

        #start gtk
        self.window.show_all()
        gtk.main()

    def AddCheckButton(self, button):
        self.vBox.pack_start(gtk.CheckButton("CheckButton"), True, True, 1)
        print "adding checkbox..."

    def close_application(self, widget):
        gtk.main_quit()

 # run it

a = DynamicVbox()

助けてくれてありがとう。前もって感謝します。

4

1 に答える 1

6

新しいチェックボタンはありますが、呼び出すまで表示されませんshow()

def AddCheckButton(self, button):
    button = gtk.CheckButton("CheckButton")
    self.vBox.pack_start(button, True, True, 1)
    button.show()
    print "adding checkbox..."
于 2011-02-10T11:56:25.260 に答える