บทความนี้ผมจะพูดถึง Widgets 4 อย่าง ได้แก่
- QLineEdit ใช้สำหรับรับค่าข้อมูล
- QCheckBox ใช้ติ๊กเลือกครับ
- QComboBox เป็นเมนูย่อยที่ใช้เลือกเช่นกันครับ
- QCalendarWidget ใช้แสดงปฏิทิน
QLineEdit
เป็นเครื่องมือที่ใช้สำหรับรับค่าข้อมูลเช่น ข้อความ ตัวเลข เป็นต้นครับ ดูลักษณะการใช้งานได้ตามตัวอย่างต่อไปนี้ครับตัวอย่างที่ 11
import sys
from PySide.QtCore import *
from PySide.QtGui import *
app = QApplication(sys.argv)
widget = QWidget() #กำหนดให้ตัวแปร widget แทน QWidget()
widget.setGeometry(200, 100, 400, 300)
widget.setWindowTitle('รับค่าข้อมูลด้วย QLineEdit')
save = QPushButton('Save', widget)
name = QLineEdit(widget)
show = QLabel(widget)
name.setGeometry(10, 10, 200, 20)
save.setGeometry(10, 40, 80, 20)
show.setGeometry(100, 100, 200, 20)
def showText():
show.setText(name.text())
widget.connect(save,SIGNAL('clicked()'), showText) #เชื่อมต่อ widget กับคลาส showText ในหน้าต่างโปรแกรมเดียวกัน
widget.show()
sys.exit(app.exec_())
ผลลัพธ์
เมื่อเรากรอกข้อมูลในช่องว่างแล้ว ตัวอย่างเช่น "สวัสดี" แล้วผมกดปุ่ม Save ก็จะปรากฎข้อความครับ
QCheckBox
เป็นเครื่องมือที่ใช้ติ๊กเลือกการทำงานครับ แต่มีแค่ Box เดียวนะครับ ดูลักษณะการใช้งานได้ตามตัวอย่างต่อไปนี้ครับตัวอย่างที่ 12
import sys
from PySide.QtCore import *
from PySide.QtGui import *
app = QApplication(sys.argv)
widget = QWidget()
widget.setGeometry(200, 100, 400, 300)
widget.setWindowTitle('QCheckBox')
show = QCheckBox('สวัสดี Python',widget) #QCheckBox สามารถเงื่อนไขที่จะเลือก
show.move(10, 10)
def con():
if show.isChecked(): #ตรวจสอบเมื่อมีการคลิกถูกที่ show
widget.setWindowTitle('ดีจ้า :D ฉันคือ Python') #เปลี่ยนชื่อหัวข้อโปรแกรม
else:
widget.setWindowTitle('')
widget.connect(show,SIGNAL('stateChanged(int)'), con) #เชื่อมต่อ show กับคลาส con ในหน้าต่างโปรแกรมเดียวกัน
widget.show()
sys.exit(app.exec_())
ผลลัพธ์
ก่อนเลือก Box
QComboBox
เป็นแถบเมนูที่เมื่อเราคลิก V แล้วจะมีเมนูเลื่อนลงมาให้เลือกครับ ดูลักษณะการใช้งานได้ตามตัวอย่างต่อไปนี้ครับตัวอย่างที่ 13
import sys
from PySide.QtCore import *
from PySide.QtGui import *
app = QApplication(sys.argv)
widget = QWidget()
widget.setGeometry(200, 100, 400, 300)
widget.setWindowTitle('QComboBox')
cb = QComboBox(widget) #กำหนดให้ตัวแปร cb แทน QComboBox(widget)
label = QLabel(widget) #กำหนดให้ตัวแปร label แทน QLabel(widget
lang = ['Python','Java','Javascript','PHP','C','C++','Ruby'] #กำหนดลิสต์ (List) ของข้อมูล
for i in lang:
cb.addItem(i)
cb.setGeometry(10, 10, 150, 20)
label.setGeometry(170, 10, 100, 20)
def hello(text):
label.setText(text) #กำหนดค่าใน label ใหม่เป็นList ข้อมูลที่เลือก
widget.connect(cb, SIGNAL('activated(QString)'), hello) #เชื่อมต่อ cb กับคลาส hello ในหน้าต่างโปรแกรมเดียวกัน
widget.show()
sys.exit(app.exec_())
ผลลัพธ์
ก่อนเลือกเมนู
QCalendarWidget
เป็น Widgets ที่ใช้แสดงปฏิทินครับ โดยทาง Qt ได้เตรียมมาให้แล้วครับ ดูลักษณะการใช้งานได้ตามตัวอย่างต่อไปนี้ครับตัวอย่างที่ 14
import sys
from PySide.QtCore import *
from PySide.QtGui import *
app = QApplication([])
win = QWidget()
win.setWindowTitle('QCalendarWidget')
layout = QVBoxLayout()
win.setLayout(layout)
# เรียกใช้ QCalendarWidget()
view = QCalendarWidget()
# เพิ่ม view เข้าไปในหน้าต่างโปรแกรม
layout.addWidget(view)
# แสดงหน้าต่าง
win.show()
app.exec_()
ผลลัพธ์
ข้อควรรู้
setGeometry เป็นการกำหนดตำแหน่งของวัตถุ โดยมีรูปแบบการใช้งานดังนี้ครับ setGeometry(x, y, w, h)
ลองนำไปประยุกต์ใช้กับการเขียนโปรแกรมดูนะครับ
ติดตามบทความต่อไปนะครับ :)
ขอบคุณครับ

0 ความคิดเห็น:
แสดงความคิดเห็น
แสดงความคิดเห็นได้ครับ :)