🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python 3.x

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

Tkinter

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

Q&A

解決済

1回答

10884閲覧

Tkinterでスクロールバーの位置の指定方法がわからない

person

総合スコア224

Python 3.x

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

Tkinter

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

0グッド

1クリップ

投稿2019/10/30 05:58

編集2019/10/31 03:51

#質問

プログラム実行時のスクロールバーのスクロール位置を指定することはできますか?(「実行したらスクロールバーはスクロール範囲の一番下にいること」など)
また、何らかの関数を呼び出したときなどに「中央へ移動する」や「一番下へ移動する」などはできますか?

#ソースコード

Python3

1# モジュールのインポート 2import tkinter as tk 3import tkinter.ttk as ttk 4import tkinter.font 5 6# ルートフレームの作成 7root = tk.Tk() 8root.geometry("1080x720") 9# ツリービューの作成 10tree = ttk.Treeview(root) 11 12frame = tk.Frame(root) 13frame.place(x=10, y=10, height=300) 14tree = ttk.Treeview(frame) 15 16 17fontsize = 30 18font = tk.font.Font(size=fontsize) 19ttk.Style().configure("Treeview.Heading", font=('', fontsize)) 20ttk.Style().configure("Treeview", font=('', fontsize), rowheight=font.metrics()['linespace']) 21 22 23# 列インデックスの作成 24tree["columns"] = (1,2,3) 25# 表スタイルの設定(headingsはツリー形式ではない、通常の表形式) 26tree["show"] = "headings" 27# 各列の設定(インデックス,オプション(今回は幅を指定)) 28tree.column(1,width=300) 29tree.column(2,width=300) 30tree.column(3,width=300) 31# 各列のヘッダー設定(インデックス,テキスト) 32tree.heading(1,text="日付") 33tree.heading(2,text="内訳") 34tree.heading(3,text="金額") 35 36# レコードの作成 37# 1番目の引数-配置場所(ツリー形式にしない表設定ではブランクとする) 38# 2番目の引数-end:表の配置順序を最下部に配置 39# (行インデックス番号を指定することもできる) 40# 3番目の引数-values:レコードの値をタプルで指定する 41tree.insert("","end",values=("2017/5/1","食費",3500)) 42tree.insert("","end",values=("2017/5/10","光熱費",7800)) 43tree.insert("","end",values=("2017/5/10","住宅費",64000)) 44tree.insert("","end",values=("2017/5/1","食費",3500)) 45tree.insert("","end",values=("2017/5/10","光熱費",7800)) 46tree.insert("","end",values=("2017/5/10","住宅費",64000)) 47tree.insert("","end",values=("2017/5/1","食費",3500)) 48tree.insert("","end",values=("2017/5/10","光熱費",7800)) 49tree.insert("","end",values=("2017/5/10","住宅費",64000)) 50tree.insert("","end",values=("2017/5/1","食費",3500)) 51tree.insert("","end",values=("2017/5/10","光熱費",7800)) 52tree.insert("","end",values=("2017/5/10","住宅費",64000)) 53tree.pack() 54 55#スクロールバーの作成 56ysb = tk.Scrollbar(frame, orient=tk.VERTICAL, width=70, command=tree.yview) 57tree.configure(yscrollcommand=ysb.set) 58ysb.pack(side='right',fill='y') 59 60 61# ツリービューの配置 62 63 64root.mainloop()

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

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

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

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

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

guest

回答1

0

ベストアンサー

set()メソッドを使用すればできるはずですよ。

Scrollbar.set

投稿2019/10/31 00:59

YouheiSakurai

総合スコア6142

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

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

person

2019/10/31 01:18

from tkinter import Scrollbar #ツリービューの作成(省略) #スクロールバー作成 ysb = tk.Scrollbar(frame, orient=tk.VERTICAL, width=20, command=tree.yview) tree.configure(yscrollcommand=ysb.set) ysb.pack(side="right", fill="y") #下へスクロール ysb.set(last) としたところ NameError: name 'last' is not defined と出ました。 自分の書き方、間違っているでしょうか?
person

2019/10/31 01:35

すみません。 from tkinter import Scrollbar #ツリービューの作成(省略) #スクロールバー作成 ysb = tk.Scrollbar(frame, orient=tk.VERTICAL, width=20, command=tree.yview) tree.configure(yscrollcommand=ysb.set(0.7, 1.0)) ysb.pack(side="right", fill="y") としたところ、スクロールバーは外観的には下に移動していました。 しかし、関連付けているTreeviewが一番上のデータを表示しています。 これは対応できないのでしょうか?
person

2019/11/05 00:59

すみません。 selection_set()とsee()を使ったらできました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問