Skip to content

สร้าง GUI ด้วย PySide ตอนที่ 3 : QWebView

สวัสดีทุกท่านครับ บทความชุด สร้าง GUI ด้วย PySide  ได้เดินทางมาถึงบทความที่ 3 แล้ว บทความนี้เราจะพูดถึงเรื่อง QWebView ใน PySide ใช้งานเกี่ยวกับการแสดงหน้าเว็บต่าง ๆ มาใช้ในโปรแกรมครับ

เนื่องจากเราใช้  PySide ซึ่งอิง Qt อีกทอดหนึ่ง ดังนั้น web browser engine ที่ใช้งานคือ WebKit ครับ สำหรับการใช้ QWebView เราต้อง  from PySide.QtWebKit import * ด้วยนะครับ

การดึงหน้าเว็บเพจโดยอ้างอิงที่อยู่เว็บเพจมาแสดง

มีการใช้งานดังนี้ครับ

web.load(QUrl("ที่อยู่เว็บไซต์"))

ตัวอย่างที่ 5

import sys
from PySide.QtCore import *
from PySide.QtGui import *
from PySide.QtWebKit import *
app = QApplication(sys.argv)
web = QWebView() #กำหนดตัวแปร web ใช้ QWebView
web.load(QUrl("http://www.google.co.th")) #ดึงหน้าเว็บเพจมาแสดง
web.show()
sys.exit(app.exec_())

ผลลัพธ์

ถ้าเราต้องการกำหนด HTML ให้  QWebView แสดง มีหลัการดังนี้ครับ
web_view.setHtml('''HTML CODE''')
ตัวอย่างที่ 6

import sys
from PySide.QtCore import *
from PySide.QtGui import *
from PySide.QtWebKit import *

app = QApplication(sys.argv)
web = QWebView()
web.setHtml('''<html>
<head>
<title>ทดสอบ</title>
</head>
<body>
<h1>Hello, World!</h1>
<hr />
ทดสอบการแสดงผล HTML ใน QWebView
</body>
</html>''')
web.show()
sys.exit(app.exec_())

ผลลัพธ์

นอกจากใช้แสดงหน้าเว็บแล้ว QWebView สามารถแสดงรูปภาพได้ โดยใช้ QWebView.setContent ดังตัวอย่างต่อไปนี้
ตัวอย่างที่ 7

import sys
from PySide.QtCore import *
from PySide.QtGui import *
from PySide.QtWebKit import *

app = QApplication([])
win = QWebView()

img = open('101_0336.png', 'rb').read() #ดึงไฟล์ 101_0336.png เข้ามาแล้วอ่าน
win.setContent(img,"image/png") #ดึงตัวแปร img ที่เก็บไฟล์รูปภาพมาแสดง โดยมีการกำหนด setContent เป็น image/png

win.show()
app.exec_()

ผลลัพธ์

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

Published on Categories GUI, PySide

About wannaphong

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

ใส่ความเห็น

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