ผมทดลองเขียนโปรแกรม login.py ขี้นมาใช้งานโดย glade ดังนี้
#!/usr/bin/env python
import sys
import pygtk
pygtk.require("2.0")
import gtk
import gtk.glade
class Login:
def __init__(self):
self.wTree = gtk.glade.XML("login.glade","loginwindow")
dic = { "on_loginwindow_destroy" : self.on_Quit,
"on_button_close_clicked" : self.on_Quit,
"on_button_apply_clicked" : self.on_Check,
"on_button_apply_enter" : self.on_Check}
self.wTree.signal_autoconnect(dic)
self.entry_user = self.wTree.get_widget("entry_user")
def on_Check(self, widget):
self.user = self.entry_user.get_text()
print self.user
def on_Quit(self, widget):
gtk.main_quit()
if __name__ == "__main__":
login = Login()
gtk.main()โดยผมเก็บแฟ้ม login.glade และ login.py ไว้ใน /home/user/project
ในกรณีที่ผมเรียก คำสั่ง python login.py ภายใน directory ดังกล่าว
ผมสามารถใช้งานได้ถูกต้อง
แต่ถ้าผมเรียก python /home/user/project/login.py จากที่อื่น
ผมจะเจอกับข้อความ error ดังนี้ครับ
(login.py:6557): libglade-WARNING **: could not find glade file 'login.glade'
Traceback (most recent call last):
File "/home/user/project/login.py", line 28, in <module>
login = Login()
File "/home/user/project/login.py", line 12, in __init__
self.wTree = gtk.glade.XML("login.glade","loginwindow")
RuntimeError: could not create GladeXML objectช่วยแนะนด้วยครับ ว่าต้องทำอะไรต่อ ขอบคุณครับ
กระทู้เก่าๆ จะย้ายตามไปในภายหลัง ตอนนี้ปิดการโพสต์กระทู้ไว้ เหลือไว้เฉพาะอ้างอิงเท่านั้น
คิดว่าแก้ปัญหาได้แล้วครับ
แก้ไขบรรทัดนี้
self.wTree = gtk.glade.XML("login.glade","loginwindow")
โดยระบุpath ให้เต็มๆ เป็น
self.wTree = gtk.glade.XML("/home/user/project/login.glade","loginwindow")
แบบนี้ใช้งานได้ครับ
หรือมีวิธีอื่นๆ อีกหรือเปล่าครับ
ดูจาก path ของตัวโปรแกรมใน
sys.argv[0]แบบนี้ขอบคุณมากครับ