編集:申し訳ありませんが、私は今私の問題の解決策を見つけたので、私が尋ねる前にもっと検索するべきでした。リンク:Tkinterのウィジェットのグループにスクロールバーを追加する
Tkinter GUIにキャンバスを追加しようとしています。ここでは、ファイルからのテキストを含むエントリウィジェットがグリッドに追加されます。ファイル内のテキストの量が多くなる傾向があるため、スクロールバーを追加する必要があります。
エントリウィジェットは、想定どおりにキャンバスに追加されます。スクロールバーを個別にテストしましたが、エントリウィジェットが追加されている場合を除いて、正常に動作します。そうすると、スクロールバーが消えます。
キャンバスとスクロールバーのコードは次のとおりです。
groupfr = Frame(self.labelll, width = 200, height = 1000)
groupfr.pack_propagate(0)
groupfr.pack(fill='both', side='left')
canvasgroup = Pmw.Group(groupfr, tag_text= 'canvasgroup')
canvasgroup.pack(fill = 'both', expand = 1, padx = 1, pady = 1)
self.canvas = Tkinter.Canvas(canvasgroup.interior(), width = 200,
height = 1000, bg = 'white')
self.canvas.config(scrollregion=(0,0,20,1000))
self.sbar = Tkinter.Scrollbar(self.canvas)
self.sbar.config(command=self.canvas.yview)
self.canvas.config(yscrollcommand=self.sbar.set)
self.sbar.pack(side='right', fill='y')
self.canvas.pack_propagate(0)
self.canvas.pack(side = 'left', fill = 'y', expand = 'no')
ひどいコードについてお詫びします。ただし、これが実際の問題の始まりです。
for items in linematch:
items = items.split('=')
list_of_lists.append(items)
columncount = 0
rowcount = 0
for items in list_of_lists:
rowcount = rowcount + 1
columncount = 0
for idx, (words) in enumerate(zip(items)):
self.canvas.pack_propagate(0)
colcnt = colcnt + 1
idx = Tkinter.Entry(self.canvas)
idx.grid(row=rowcount, column=columncount)
idx.insert(0, words)
このコードはファイル入力を受け取り、各行を2つの項目のリストにし、それ自体が別のリストに追加されます。このリストのリストは、次のようなエントリウィジェットに配置されて使用され、各単語(および翻訳)は独自のエントリウィジェットに含まれます。
word translation
word translation
など(この情報がどれほど重要かわからない。)
エントリウィジェットが追加されたときにスクロールバーが消える理由を誰かが理解していますか?
ありがとう