0

次のコードを使用してフレームのセクションを削除しました(現在表示されているボックスの数を削除したいのですが、これは異なる場合があります)。

for i in xrange(self.number_boxes):

    self.box[i].grid_remove()
    self.choice_title.grid_remove()

しかし、私は次のようになります:

テーブル

メインウィンドウの最後の部分がそこにとどまっているのに、私は何を間違っているのですか?!

ルートウィンドウ、次にメインウィンドウ'win1'があり、フレーム'frame_table'がすべてのテーブルを保持しています。背景は黒に設定されています。

更新:OptionMenuのオプションの変更に対応します:

個別のフレームを作成するのではなく、現在のフレーム「frame_table」に一連の入力ボックスを作成しました。「リスト」オプションを選択すると、ユーザーは作成するボックスの数を入力します。他のオプションでは、常に2つのボックスが作成されます。'fixed'値では、追加のボックスは必要ないため、すべてのボックスを削除する必要があります。

したがって、「リスト」から「メニューの他のオプション(固定されていない)」に移動する場合は、新しいボックスを作成する前に、「リスト」オプションのボックスを削除する必要があります。

4

1 に答える 1

2

イディオム:

for i in xrange(self.number_boxes):

    self.box[i].grid_remove()
    self.choice_title.grid_remove()

Pythonではめったに必要ないはずです。おそらく、間違っているためにボックスが削除されていないのself.number_boxesがわかります(どこかで更新するのを忘れた可能性があります)。それを行うためのより良い方法は次のとおりです。

for box in self.boxes:
    box.grid_remove()
else:
    self.choice_title.grid_remove()

これにより、問題が解決する場合と解決しない場合があります。

于 2012-07-10T12:51:06.743 に答える