質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Q&A

解決済

1回答

11045閲覧

python ttk Notebookにtreeviewをグリッドで配置した時にスクロールバーが収まらない

OKARA

総合スコア63

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

0グッド

1クリップ

投稿2018/08/02 08:34

前提・実現したいこと

ノートブックにツリービューを配置して縦横のスクロールバーを配置したい
のですが、ツリービューに表示するカラムの幅が広すぎると縦スクロールバー
が表示されません

イメージ説明

ちなみにカラム幅をノートブックの定義幅に収まるようにすれば表示されました

表示項目が多いため、画面からはみ出るカラムが存在するのですが、この状態でも
縦横のスクロールが評されるようにするにはどうすればいいでしょうか?

該当のソースコード

python

1 # 作業用ノートブック 2 self.NB = TTK.Notebook(FMB, width=350 , height= 300) 3 4 # タブの作成 5 self.FM_NB1 = TK.Frame(self.NB) 6 self.FM_NB2 = TK.Frame(self.NB) 7 self.NB.add(self.FM_NB1, text='現作業', padding=5) 8 self.NB.add(self.FM_NB2, text='作業一覧', padding=5) 9 self.NB.pack(side = TK.TOP,expand=1, fill='both',padx=10,pady=10) 10 11 # 作業オーダフレーム 12 self.TV_O = TTK.Treeview(self.FM_NB1,height=10) 13 14 # 列インデックスの作成 15 self.TV_O["columns"] = (1,2,3,4,5,6,7,8) 16 17 # 表スタイルの設定 18 self.TV_O["show"] = "headings" 19 20 # 各列の設定(インデックス,オプション(今回は幅を指定)) 21 self.TV_O.column(1,width=120,stretch=False) 22 self.TV_O.column(2,width=60,stretch=False) 23 self.TV_O.column(3,width=40,stretch=False) 24 self.TV_O.column(4,width=100,stretch=False) 25 self.TV_O.column(5,width=60,stretch=False) 26 self.TV_O.column(6,width=60,stretch=False) 27 self.TV_O.column(7,width=60,stretch=False) 28 self.TV_O.column(8,width=60,stretch=False) 29 30 # 各列のヘッダー設定(インデックス,テキスト) 31 self.TV_O.heading(1,text="KEY") 32 self.TV_O.heading(2,text="状態") 33 self.TV_O.heading(3,text="目標") 34 self.TV_O.heading(4,text="バーコード") 35 self.TV_O.heading(5,text="オーダ") 36 self.TV_O.heading(6,text="アイテム") 37 self.TV_O.heading(7,text="品番") 38 self.TV_O.heading(8,text="個数") 39 40 # ツリービューの配置 41 self.TV_O.grid(row=0,column=0,padx=10,pady=3,sticky=TK.W + TK.E + TK.N + TK.S) 42 43 # 縦スクロールバーの配置 44 self.SCRLBAR_Y = TTK.Scrollbar(self.FM_NB1,orient=TK.VERTICAL,command=self.TV_O.yview) 45 self.TV_O.configure(yscroll=self.SCRLBAR_Y.set) 46 self.SCRLBAR_Y.grid(row=0,column=1,sticky=TK.N + TK.S) 47 48 # 横スクロールバーの配置 49 self.SCRLBAR_X = TTK.Scrollbar(self.FM_NB1,orient=TK.HORIZONTAL,command=self.TV_O.xview) 50 self.TV_O.configure(xscroll=self.SCRLBAR_X.set) 51 self.SCRLBAR_X.grid(row=1,column=0,sticky=TK.W + TK.E)

試したこと

上記コードでは、横スクロールバーは表示はされますが非アクティブな
状態なのでグリッド配置が表示範囲を超えてしまっているのかと思ってます

ちなみに、縦スクロールを無視して、パックで上から配置した場合は
同じカラム幅の条件でアクティブなスクロールバーが表示されました

補足情報(FW/ツールのバージョンなど)

python:3.6.5
tkinter:8.6

開発環境はWin10
IDEはvisual studio codeを使っています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

placeを使って配置場所をしていしたらうまくいきました

python

1 2 # ツリービューの配置 3 self.TV_O.place(relheight=0.95,relwidth=0.95,relx=0.0,rely=0.0) 4 5 # 縦スクロールバーの配置 6 self.SCRLBAR_Y = TTK.Scrollbar(self.FM_NB1,orient=TK.VERTICAL,command=self.TV_O.yview) 7 self.TV_O.configure(yscroll=self.SCRLBAR_Y.set) 8 self.SCRLBAR_Y.place(relheight=0.95,relwidth=0.05,relx=0.95,rely=0.0) 9 10 # 横スクロールバーの配置 11 self.SCRLBAR_X = TTK.Scrollbar(self.FM_NB1,orient=TK.HORIZONTAL,command=self.TV_O.xview) 12 self.TV_O.configure(xscroll=self.SCRLBAR_X.set) 13 self.SCRLBAR_X.place(relheight=0.05,relwidth=0.95,relx=0.0,rely=0.95) 14

イメージ説明

投稿2018/08/03 04:46

OKARA

総合スコア63

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問