2017-03-10 15 views
1

Tkinterで複数のリストボックスを同時にスクロールする(同期する)ためにスクロールバーを使用したいと思います。クラスを使用せずに1つのスクロールバーを使って複数のリストボックスをスクロールする

問題は、スタックオーバーフローのすべてのソリューションは、複数のリストボックスに単一のスクロールバーを追加するためにクラスを使用しているようです。クラスを使っていなくても同じことをしたいと思っています。私はクラスについての経験がないので可能です。

from tkinter import * 
import tkinter as tk 


root = Tk() 

##This code will only scroll through 1 listbox. 
listbox1 = Listbox(root) 
listbox1.grid(row=1, column=2) 
listbox2 = Listbox(root) 
listbox2.grid(row=1, column=3) 
scrollbary = Scrollbar(root, command=listbox1.yview, orient=VERTICAL) 
scrollbary.grid(row=1, column=1, sticky="ns") 

for i in range(100): 
    listbox1.insert("end","item %s" % i) 
    listbox2.insert("end","item %s" % i) 

答えて

1

それはクラスの外に動作するように私はhttp://effbot.org/tkinterbook/listbox.htmからコードを適応:

ここに私のコードの簡易版です。

import tkinter as tk 

root = tk.Tk() 

def yview(*args): 
    """ scroll both listboxes together """ 
    listbox1.yview(*args) 
    listbox2.yview(*args) 

listbox1 = tk.Listbox(root) 
listbox1.grid(row=1, column=2) 
listbox2 = tk.Listbox(root) 
listbox2.grid(row=1, column=3) 
scrollbary = tk.Scrollbar(root, command=yview) 
listbox1.config(yscrollcommand=scrollbary.set) 
listbox2.config(yscrollcommand=scrollbary.set) 
scrollbary.grid(row=1, column=1, sticky="ns") 

for i in range(100): 
    listbox1.insert("end","item %s" % i) 
    listbox2.insert("end","item %s" % i) 

root.mainloop() 

あなたもこの質問への回答を参照して、マウスホイールでそれらを一緒にスクロールしたい場合:Scrolling multiple Tkinter listboxes together。答えはクラスで与えられますが、バインディングと関数はクラスを使用せずに行うこともできます。

関連する問題