PyQt: QTimer และการแก้ไข Style Sheets

Jul 23, 2024

บรรยายเกี่ยวกับ PyQt: QTimer และการแก้ไข Style Sheets

บทนำ

  • ต่อเนื่องจากหัวข้อ PyQt ของวันก่อนหน้า
  • เน้นไปที่คลาสต่างๆ ที่สำคัญสำหรับการพัฒนาแอปพลิเคชัน Python ด้วย PyQt

คลาสของ PyQt ที่ครอบคลุม

  1. QTimer
  2. QTimer และ Style Sheets
    • การแก้ไข Style Sheets
  3. การจัดการ Layouts
    • Tab Widgets
  4. การปิดการใช้งานวัตถุ

QTimer

  • QTimer เป็นคลาสของ PyQt สำหรับการจัดการตัวจับเวลา
  • คล้ายกับตัวจับเวลาใน microcontrollers เช่น Arduino สามารถปลุกและเรียกใช้ฟังก์ชันเฉพาะในช่วงเวลาที่สม่ำเสมอ
  • ข้อดี: ทำงานอย่างอิสระจากโปรแกรมหลัก
  • การใช้งานทั่วไป: ในแอปพลิเคชัน PyQt สำหรับการจับเวลาเหตุการณ์
  • ขั้นตอนในการใช้งาน QTimer:
    1. สร้างวัตถุ QTimer: mytimer = QCore.QTimer()
    2. เชื่อมตัวจับเวลาเข้ากับฟังก์ชันเฉพาะด้วย .timeout.connect(function_name)
    3. เริ่มต้นตัวจับเวลาด้วย .start(interval) หรือกำหนดค่า interval และจากนั้นเริ่มต้น

ตัวอย่างโค้ดสำหรับ QTimer

  • สร้างโปรเจคใหม่ที่รวม QTimer
  • ตัวอย่างฟังก์ชันที่พิมพ์ข้อความทุกวินาที
self.autoPrint = QCore.QTimer()
self.autoPrint.timeout.connect(self.print_hello)
self.autoPrint.start(1000)
  • ตัวอย่างการเริ่มต้นด้วย intervals
self.autoPrint.setInterval(1000)
self.autoPrint.start()
  • ตัวอย่างการปิดการใช้งานตัวจับเวลา
self.autoPrint.stop()

การแก้ไข Style Sheets

  • วัตถุประสงค์: ปรับแต่งรูปลักษณ์ของ widgets ภายในแอปพลิเคชัน
  • วิธีการแก้ไข:
    • ใช้เครื่องมือ Q-Designer โดยตรง
    • ผ่านโค้ด ด้วยคุณสมบัติเช่น setStyleSheet
  • ตัวอย่าง: เปลี่ยนสีพื้นหลังของปุ่ม
background-color: rgb(28, 251, 161);
  • การเปลี่ยนสีแบบไดนามิกของแบนเนอร์ warning เป็นการประยุกต์ใช้จริง

Layouts

  • Layouts: จัดวาง widgets ภายในแอปอย่างเป็นระเบียบและตอบสนอง
  • ประเภทที่พบบ่อย:
    1. ตั้งตรง
    2. แนวนอน
    3. Grid
    4. Tab Widgets (ประกอบด้วย widgets อื่นๆ ในแท็ป)
  • ตัวอย่างโค้ดสำหรับ Tab Widget:
self.tabWidget = QTabWidget()
self.tabWidget.addTab(self.first_tab, "Tab 1")
self.tabWidget.addTab(self.second_tab, "Tab 2")

การปิดการใช้งานวัตถุ

  • วัตถุประสงค์: ป้องกันไม่ให้ผู้ใช้โต้ตอบกับ widgets บางตัวในสถานการณ์เฉพาะ
  • โค้ดสำหรับปิดการใช้งานและเปิดการใช้งาน widgets:
self.wid.setEnabled(False)   # ปิดการใช้งาน
self.wid.setEnabled(True)    # เปิดการใช้งาน

สรุป

  • คำแนะนำในการใช้คลาสและเทคนิคเหล่านี้ในโปรเจคของตนเอง
  • เชิญชวนให้นักศึกษาฝึกฝนด้วยตัวอย่างที่จัดมาให้และพัฒนาแอป PyQt ของตนเอง

Q&A และแบบฝึกหัด

  • แบบฝึกหัดปฏิบัติเพื่อความเข้าใจในแนวคิดที่เรียนรู้
  • เป้าหมายที่ปรับให้เหมาะสมกับความต้องการของนักศึกษา