Tôi thực sự xin lỗi vì đã làm phiền bạn với AttributeError, nhưng tôi không thể tìm ra điều gì sai với mã của mình mặc dù tôi đã làm việc thông qua nhiều câu hỏi được giải quyết liên quan đến AttributeErrors.AttributeError trong hàm gọi lại
Đây là mã của tôi:
class Base:
def __init__(self):
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.window.set_position(gtk.WIN_POS_CENTER)
self.window.set_size_request(500,500*9/16)
self.window.set_title("pattern_executer")
self.button1 = gtk.Button(" E x i t ")
self.button1.connect("clicked",self.close)
self.button2 = gtk.Button("Plot")
self.button2.connect("clicked",self.plot)
self.button3 = gtk.Button("Search")
self.button3.connect("clicked",self.search)
self.entry1 = gtk.Entry()
self.entry1.connect("changed",self.dir_ch)
self.entry1.set_text("dir1")
self.entry2 = gtk.Entry()
self.entry2.connect("changed",self.dir_ch)
self.entry2.set_text("name")
self.entry3 = gtk.Entry()
self.entry3.connect("changed",self.dir_ch)
self.entry3.set_text("dir2")
#self.label1 = gtk.Label("FUNCTIONS")
fixed1 = gtk.Fixed()
fixed1.put(self.button1,10,250)
fixed1.put(self.button2,10,60)
fixed1.put(self.button3,10,30)
fixed1.put(self.entry1,90,30)
fixed1.put(self.entry2,90,60)
fixed1.put(self.entry3,90,90)
self.window.add(fixed1)
self.window.show_all()
self.window.connect("destroy",self.close)
def run(self,widget):
print "Run ... "
def search(self,widget):
box = (settings[1] - settings[3]/2,settings[2] - settings[4]/2,settings[1] + settings[3]/2,settings[2] + settings[4]/2)
cut1 = im.crop(box)
cut1.show()
def cut(self):
box = (settings[1] - settings[3]/2,settings[2] - settings[4]/2,settings[1] + settings[3]/2,settings[2] + settings[4]/2)
cut1 = im.crop(box)
return cut1
def gpv(self): #get pixel value
data = self.cut()
data = list(data.getdata())
data = np.array(data)
data = data.reshape(settings[4],settings[3])
data = np.flipud(data)
return data
def plot(self,widget):
xlist = np.linspace(0,1.0,settings[3])
ylist = np.linspace(0,1.0,settings[4])
X,Y = np.meshgrid(xlist, ylist)
fig = plt.figure()
fig = plt.contour(X, Y, self.gpv(),settings[0],colors = "k")
fig = plt.contourf(X, Y, self.gpv(),settings[0])
plt.show(fig)
def dir_ch(self,widget):
directories[0] = self.entry1.get_text()
directories[1] = self.entry2.get_text()
directories[2] = self.entry3.get_text()
def close(self,widget,data=None):
print "Closed"
gtk.main_quit()
def main(self):
gtk.main()
if __name__ == "__main__":
base = Base()
base.main()
Nếu tôi thực hiện nó, tôi nhận được thông báo lỗi sau:
Traceback (most recent call last):
File "E:\cutter\cutter.py", line 113, in dir_ch
directories[1] = self.entry2.get_text()
AttributeError: Base instance has no attribute 'entry2'
Traceback (most recent call last):
File "E:\cutter\cutter.py", line 114, in dir_ch
directories[2] = self.entry3.get_text()
AttributeError: Base instance has no attribute 'entry3'
Vấn đề hài hước - với ý kiến của tôi - được rằng "entry 1" là hoàn toàn tương tự như "entry2" và "entry3" nhưng không gây ra bất kỳ sự cố nào. Bạn có biết tại sao những lỗi này xảy ra không?
Cảm ơn bạn rất nhiều vì đã giúp đỡ!
Truy nguyên không phải là đặc biệt hữu ích (nếu tất cả được đăng). Tại một số thời điểm nó sẽ gửi cho bạn đến dòng 'self.entry1.connect (" thay đổi ", self.dir_ch)' ... – mgilson
Bạn đang chết người đúng ... Cảm ơn bạn rất nhiều cho câu trả lời này nhanh David! –