การเขียนโปรแกรมด้วยภาษา Kivy
ปัญหาการเรียกใช้ฟังก์ชั่นในไฟล์ .kv
ในการเขียนโปรแกรมด้วยภาษา kivy นั้น จะทำงานร่วมกับภาษา python โดยจะแบ่งหน้าที่กันเป็นสองส่วน เปรียบได้ว่า python จะเป็นตัวกำหนดการทำงาน ส่วน kivy จะระบุส่วนประกอบของหน้าโปรแกรม และ GUI (Graphic User Interface)
GUI (Graphic User Interface) คือ ส่วนที่ทำงานติดต่อกับผู้ใช้ อ่านการกระทำ และไปใช้ในการประมวลผลต่างๆ เช่น เราออกแบบ Button เอาไว้ เมื่อมีการกดที่ปุ่มนี้ จะให้แสดงคำว่า "Hello"
GUI (Graphic User Interface) คือ ส่วนที่ทำงานติดต่อกับผู้ใช้ อ่านการกระทำ และไปใช้ในการประมวลผลต่างๆ เช่น เราออกแบบ Button เอาไว้ เมื่อมีการกดที่ปุ่มนี้ จะให้แสดงคำว่า "Hello"
วิธีการเขียนคำสั่งแบบนั้น ใน kivy จะเขียนได้ดังนี้
ใน python file
def Hello():
text = "Hello"
return text
ใน kivy file
Button:
on_press: root.hello()
ที่ขีดเส้นใต้เอาไว้ คือ ฟังก์ฃั่นที่ถูกสร้างอยู่ใน python file โดยฟังก์ชั่นนี้ไม่มีการรับพารามิเตอร์
แต่ถ้าฟังก์ชั่นนั้นมีพารามิเตอร์เราสามารถใส่พารามิเตอร์ ในการเรียกใช้ได้เลย ตัวอย่างเช่น
ใน python file
def hello(name):
text = "Hello "+name
return text
ใน kivy file
on_press: root.hello("Somruk")
แต่ถ้าพารามิเตอร์ที่เราจะเรียกใช้เป็น attribute ที่มีอยู่แล้ว และไปเรียกใช้ฟังก์ชั่นใน kivy ซึ่ง kivy ไม่ได้รู้จัก attribute นั้น จะทำให้ผลลัพท์ที่ได้ผิดพลาดไป ยกตัวอย่างจากผลงานของผู้เขียน
โปรแกรมรับข้อมูลชื่อจาก textinput และไปเพิ่ม ชื่อใน List
จากรูป ที่ตรงกลาง มีการเรียกใช้ฟังก์ชั่น addStudent และ พารามิเตอร์เป็น attribute ใน python ผลที่ได้คือ
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlVz1QJfZa21kCMElQOlTVm1paiEIOcijn2bAIfiKZvFlUqu4cmKOzPWfwdc8carh_NdI4rXEB8ZWMfEwXgMiMmKVCCjQdPL5STQ9hkVRmxY1krPHtOnaAzLiTgZxEUq32rIGSh-bzIM0h/s1600/%25E0%25B8%259C%25E0%25B8%25A5%25E0%25B8%25A5%25E0%25B8%25B1%25E0%25B8%259E%25E0%25B8%259C%25E0%25B8%25B4%25E0%25B8%2594.png)
วิธีการแก้ คือ ให้เราเรียกใช้ ฟังก์ชั่นนี้ ใน python ไฟล์ เพื่อให้ฟังก์ฃั่นนั้น รู้ัจัก attribute
ในที่นี้ได้เรียกผ่านฟังก์ชั่นที่ชื่อว่า OpenFile
ผลที่ได้
จะเห็นว่าผลลัพท์สอดคล้องกับข้อมูลที่ใส่เข้าไป
ไม่มีความคิดเห็น:
แสดงความคิดเห็น