Tkinter
を使用して簡単なプログラムを作成しています。 xview
プロパティーが変更される度に呼び出される関数をentry
に変更したい。しかし、少なくとも私が見つけることができないこのような出来事はないようです。エントリのxviewが変更されたときのイベント
<Configure>
イベントは、すでに処理したサイズ変更でのみ発生しますが、実際の値が変更されたときには変更されません。ユーザーがマウスをドラッグしてエントリの終わりを確認します。
import Tkinter as Tk
import tkFileDialog
root = Tk.Tk()
class RepositoryFolderFrame(Tk.Frame):
def __init__(self, root):
Tk.Frame.__init__(self, root)
self.build_gui()
self.set_entry_text("Searching...")
#root.after(0, self.find_repo)
self.prev_entry_index = len(self.entry.get())
root.bind("<Configure>", self.on_entry_resize)
#self.entry.bind(???, self.on_entry_change)
#self.entry.bind("<Configure>", self.on_entry_change)
def on_entry_resize(self, event):
cur_entry_index = self.entry.xview()[1]
if cur_entry_index != self.prev_entry_index:
self.entry.xview(self.prev_entry_index)
def on_entry_change(self, event):
# This should be called when xview changes...
cur_entry_index = self.entry.xview()[1]
self.prev_entry_index = cur_entry_index
def set_entry_text(self, text):
self.entry_text.set(text)
self.entry.xview("end")
def build_gui(self):
label = Tk.Label(self, text = "Repository folder:")
label.pack(side = Tk.LEFT)
self.label = label
entry_text = Tk.StringVar()
self.entry_text = entry_text
entry = Tk.Entry(self, width = 50, textvariable = entry_text)
entry.configure(state = 'readonly')
entry.pack(side = Tk.LEFT, fill = Tk.X, expand = 1)
self.entry = entry
button = Tk.Button(self, text = "Browse...")
button.pack(side = Tk.LEFT)
self.button = button
repo_frame = RepositoryFolderFrame(root)
repo_frame.pack(fill = Tk.X, expand = 1)
root.mainloop()
何が?です。 'RepositoryFolderFrame' ??? –
'Tkinter.Frame'を継承するクラスです(コードで分かります)。基本的には、3つのウィジェットとそれらに関連する関数のラッパーです。 –
ああ、あなたがこのクラスを作りました。しかし、なぜそれは私にエラーを与えましたか? –