20 สิงหาคม 2557

Published 8/20/2557 by with 5 comments

สร้าง GUI ด้วย PySide ตอนที่ 2 : ดึงองค์ประกอบต่าง ๆ มารวมกัน

สวัสดีครับทุกท่าน จากบทความที่แล้วเราได้สร้างโปรแกรม Hello World โดยได้ใช้ PySide ครับ (โปรแกรมระดับตำนาน) ผมได้ยกตัวอย่างทั้ง 2 ตัวอย่าง แต่ถ้าอยากจับทั้งตัวอย่างที่ 1 และ 2 มารวมกันในหน้าต่างเดียวกัน
บทความนี้จะพาทุกท่านไปจับทั้ง 2 ตัวอย่างนั้นมารวมในหน้าต่างเดียวกัน ในการดึงองค์ประกอบต่าง ๆ มารวมกันต้องใช้ QVBoxLayout() ครับ

โค้ดโปรแกรม Hello World ตัวอย่างที่ 3
import sys
from PySide.QtCore import *
from PySide.QtGui import *


app = QApplication(sys.argv)
win = QWidget()
win.resize(320, 240) #กำหนดขนาดของหน้าต่างโปรแกรม
win.setWindowTitle("Hello, World!") #กำหนดชื่อตรงหัวโปรแกรม
layout = QVBoxLayout() #ดึง QVBoxLayout() มาใช้งานเพิ่มให้เราสามารถดึงวัตถุมารวมกันได้
win.setLayout(layout) #กำหนดให้ตัวแปร win ชึ่งเป็น QWidget ดึงตัวแปรที่อยู่ใน layout มาแสดง

label = QLabel("Hello World") #กำหนดข้อความ
layout.addWidget(label) #เพิ่มดึงตัวแปร label เข้ามา
win.show() #แสดง
app.exec_()

ผลลัพธ์

จะเห็นได้ว่าเราสามารถดึงทั้งองค์ประกอบต่าง ๆ มารวมกันในหน้าต่างเดียวกันได้ครับ หากเราต้องการดึงองค์ประกอบมากกว่าสองขึ้นไปสามารถทำแบบเดียวได้ ดังตัวอย่างต่อไปนี้
ตัวอย่างที่ 4
import sys
from PySide.QtCore import *
from PySide.QtGui import *

app = QApplication(sys.argv)

win = QWidget()

win.resize(320, 240) #กำหนดขนาดของหน้าต่างโปรแกรม
win.setWindowTitle("Hello, World!") #กำหนดชื่อตรงหัวโปรแกรม
layout = QVBoxLayout()
win.setLayout(layout)

label = QLabel("Hello World")
label2 = QLabel("สวัสดี")
label3 = QLabel("เพิ่งเริ่มต้นเรียน PySide -..- จากผู้เขียนบทความ")

layout.addWidget(label)
layout.addWidget(label2)
layout.addWidget(label3)

win.show() #แสดง

app.exec_()

ผลลัพธ์

สำหรับท่านใดที่มีปัญหากับภาษาไทย PySide ให้ท่านตรวจสอบ encoding ของไฟล์กับข้อความว่าเป็น utf-8 หรือไม่ครับ ที่มีปัญหาเพราะ encoding ของไฟล์กับข้อความไม่เหมือนกันครับ
ติดตามบทความต่อไปนะครับ :)
ขอบคุณครับ

5 ความคิดเห็น:

  1. ไม่ระบุชื่อ23 ตุลาคม 2560 00:30

    ทำให้เป็นภาษาไทยยังไงครับ แสดงผลออกมาแล้วภาษามันเพี้ยน

    ตอบลบ
    คำตอบ
    1. ตรวจสอบ encoding ของไฟล์กับข้อความว่าเป็น utf-8 หรือไม่ครับ ก่อนครับ

      ลบ
    2. ไม่ระบุชื่อ31 ตุลาคม 2560 14:40

      รบกวนช่วยสอนวิธีตรวจสอบหน่อยครับ

      ลบ
    3. ใส่
      # -*- coding: utf-8 -*-
      เข้าไปบนหัวโค้ดครับ

      ลบ
    4. ไม่ระบุชื่อ16 พฤศจิกายน 2560 23:30

      ไม่ได้อยู่ดีครับ เป็นภาษาต่างด้าว ผมใช้ python 2.7.13 PySide 1.2.4

      ลบ

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