Skip to content

สร้าง 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 ของไฟล์กับข้อความไม่เหมือนกันครับ

ติดตามบทความต่อไปนะครับ 🙂
ขอบคุณครับ

Published on Categories GUI, PySide

About wannaphong

วรรณพงษ์ ภัททิยไพบูลย์ ผู้ดูแลเว็บ wannaphong.com และผู้เขียนบทความบล็อกนี้ นักศึกษาชั้นปีที่ 1 สาขาวิทยาการคอมพิวเตอร์และสารสนเทศ คณะวิทยาศาสตร์ประยุกต์และวิศวกรรมศาสตร์ มหาวิทยาลัยขอนแก่น วิทยาเขตหนองคาย

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องที่ต้องการถูกทำเครื่องหมาย *