Tkinterでリストボックスを操作しようとしていますが、問題が発生しています。以前はすべてを1つのクラス、1ページにまとめていましたが、問題なく機能しました。メソッドを2つの異なるページ(1つは表示用、もう1つは変更用)で異なるクラスに分けましたが、問題が発生しています。
次のエラーが発生しますAttributeError:Actions has noattribute'listbox'。2つのファイルに分割する前は正常に機能したため、継承に関連するものだと思います。
これが最初のファイルです
from Tkinter import *
import Tkinter
import SortActions
class MakeList(Tkinter.Listbox):
def BuildMainWindow(self):
menubar = Frame(relief=RAISED,borderwidth=1)
menubar.pack()
mb_file = Menubutton(menubar,text='file')
mb_file.menu = Menu(mb_file)
mb_file.menu.add_command(label='open', command = self.BuildListbox)
mb_file.pack(side=LEFT)
mb_edit = Menubutton(menubar,text='edit')
mb_edit.menu = Menu(mb_edit)
mb_edit.pack(padx=25,side=RIGHT)
mb_file['menu'] = mb_file.menu
mb_edit['menu'] = mb_edit.menu
return
def BuildListbox(self):
self.listbox = Tkinter.Listbox()
index = SortActions.Actions()
self.listbox.bind('<<ListboxSelect>>', index.GetWindowIndex)
MoveItem = SortActions.Actions()
self.listbox.bind('<B1-Motion>', index.MoveWindowItem)
for item in ["one", "two", "three", "four"]:
self.listbox.insert(END, item)
self.listbox.insert(END, "a list entry")
self.listbox.pack()
#print self.listbox.get(0, END)
return
if __name__ == '__main__':
start = MakeList()
start.BuildMainWindow()
mainloop()
そして2番目のファイル、私が問題を抱えているファイル
from FileSort import MakeList
class Actions(MakeList):
#gets the current item that was clicked in the window
def GetWindowIndex(self, event):
w = event.widget
self.curIndex = int(w.curselection()[0])
#moves the current item in the window when clicked/dragged
def MoveWindowItem(self, event):
i = self.listbox.nearest(event.y) #here is where the error is occurring
print i
MakeListクラスを継承しているので、アクセスできるはずだと思いました。また、MakeList(オブジェクト)に直接アクセスするように変更してみましたが、「Actionsインスタンスに属性がありません...」というエラーの代わりに「MakeListに属性がありません...」と表示されました。
以前に何かを投稿しましたが、誤って古いバージョンのコードを実行したため、間違ったエラーを参照していました。その投稿を見たらごめんなさい。もうなくなった