だから私はtkinterライブラリを使用してrssリーダーを作成しており、私のメソッドの1つでテキストウィジェットを作成しています。スクロールバーを追加するまで表示されます。
これがスクロールバーの前の私のコードです:
def create_text(self, root):
self.textbox = Text(root, height = 10, width = 79, wrap = 'Word')
self.textbox.grid(column = 0, row = 0)
ここに私のコードがあります:
def create_text(self, root):
self.textbox = Text(root, height = 10, width = 79, wrap = 'Word')
vertscroll = ttk.Scrollbar(root)
vertscroll.config(command=self.textbox.yview)
vertscroll.pack(side="right", fill="y", expand=False)
self.textbox.config(yscrllcommand=vertscroll.set)
self.textbox.pack(side="left", fill="both", expand=True)
self.textbox.grid(column = 0, row = 0)
これは私にエラーを与えます
_tkinter.TclError:vertscroll.pack(side = "right"、fill = "y"、expand = False)の行でグリッドによって管理されているスレーブを既に持っている.56155888内でジオメトリマネージャーパックを使用できません
これを修正する方法はありますか?
ドキュメント ごとに、同じマスターウィンドウでpack
とgrid
を混在させないでください。
警告:グリッドとパックを同じマスターウィンドウに混在させないでください。 Tkinterは、あなたの生涯の残りを、両方のマネージャーが満足するソリューションを交渉しようとして喜んで過ごします。待つ代わりに、アプリケーションを強制終了し、コードをもう一度見てください。よくある間違いは、一部のウィジェットに間違った親を使用することです。
したがって、テキストボックスでgrid
を呼び出す場合、スクロールバーでpack
を呼び出さないでください。
import Tkinter as tk
import ttk
class App(object):
def __init__(self, master, **kwargs):
self.master = master
self.create_text()
def create_text(self):
self.textbox = tk.Text(self.master, height = 10, width = 79, wrap = 'Word')
vertscroll = ttk.Scrollbar(self.master)
vertscroll.config(command=self.textbox.yview)
self.textbox.config(yscrollcommand=vertscroll.set)
self.textbox.grid(column=0, row=0)
vertscroll.grid(column=1, row=0, sticky='NS')
root = tk.Tk()
app = App(root)
root.mainloop()
コードの理由は簡単です。同じクラス内または同じフレームでパックとグリッドを使用することはできません。したがって、1つだけを使用してください。