Qt Designer |
โค้ดตัวอย่างไฟล์ ui.ui ที่ผมสร้างครับ
<?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <class>Form</class> <widget class="QWidget" name="Form"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>400</width> <height>300</height> </rect> </property> <property name="windowTitle"> <string>Form</string> </property> <widget class="QLabel" name="label"> <property name="geometry"> <rect> <x>80</x> <y>60</y> <width>231</width> <height>141</height> </rect> </property> <property name="font"> <font> <pointsize>22</pointsize> </font> </property> <property name="text"> <string>Hello World</string> </property> </widget> </widget> <resources/> <connections/> </ui>การที่เราจะนำไปใช้งานเราต้องแปลง .ui เป็น .py ก่อนครับ โดยเราสามารถใช้ pyside-uic เป็นเครื่องมือในการแปลงครับ มีวิธีการแปลงดังนี้ครับ เปิด cmd แล้วไปยังโฟลเดอร์ที่เก็บไฟล์ ผมใช้คำสั่ง pyside-uic u.ui > u.py แค่นี้เราก็จะได้ .py แล้วครับ แต่ยังไม่สามารถนำไปใช้งานได้ โดยโค้ดที่ถูกแปลง ของผมมีดังนี้ครับ โค้ดตัวอย่าง u.py ก่อนแก้ไข
# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'u.ui' # # Created: Mon Aug 25 21:48:20 2014 # by: pyside-uic 0.2.15 running on PySide 1.2.2 # # WARNING! All changes made in this file will be lost! from PySide import QtCore, QtGui class Ui_Form(object): #คลาส Ui_Form เก็บรายละอียดที่เราสร้าง def setupUi(self, Form): Form.setObjectName("Form") Form.resize(400, 300) self.label = QtGui.QLabel(Form) self.label.setGeometry(QtCore.QRect(80, 60, 231, 141)) font = QtGui.QFont() font.setPointSize(22) self.label.setFont(font) self.label.setObjectName("label") self.retranslateUi(Form) QtCore.QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form): Form.setWindowTitle(QtGui.QApplication.translate("Form", "Form", None, QtGui.QApplication.UnicodeUTF8)) self.label.setText(QtGui.QApplication.translate("Form", "Hello World", None, QtGui.QApplication.UnicodeUTF8))เมื่อเรารันแล้ว ไม่มีหน้าต่างอะไรขึ้นมาเลยครับ เราต้องเพิ่มคำสั่งเข้าไป โค้ดตัวอย่าง u.py หลังแก้ไข
# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'u.ui' # # Created: Mon Aug 25 21:48:20 2014 # by: pyside-uic 0.2.15 running on PySide 1.2.2 # # WARNING! All changes made in this file will be lost! import sys #เพิ่ม import sys from PySide import QtCore, QtGui class Ui_Form(object): #คลาส Ui_Form เก็บรายละอียดที่เราสร้าง def setupUi(self, Form): Form.setObjectName("Form") Form.resize(400, 300) self.label = QtGui.QLabel(Form) self.label.setGeometry(QtCore.QRect(80, 60, 231, 141)) font = QtGui.QFont() font.setPointSize(22) self.label.setFont(font) self.label.setObjectName("label") self.retranslateUi(Form) QtCore.QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form): Form.setWindowTitle(QtGui.QApplication.translate("Form", "Form", None, QtGui.QApplication.UnicodeUTF8)) self.label.setText(QtGui.QApplication.translate("Form", "Hello World", None, QtGui.QApplication.UnicodeUTF8)) class ControlMainWindow(QtGui.QMainWindow): #เพิ่มคลาสมาอีก def __init__(self, parent=None): super(ControlMainWindow, self).__init__(parent) self.ui = Ui_Form() #ดึงคลาส Ui_Form ที่เก็บรายละอียด ui มาใช้ self.ui.setupUi(self) if __name__ == "__main__": app = QtGui.QApplication(sys.argv) mySW = ControlMainWindow() mySW.show() #แสดง sys.exit(app.exec_()) def main(): app = QtGui.QApplication(sys.argv) mySW = ControlMainWindow() #ดึงคลาส ControlMainWindow มาใช้ mySW.show() sys.exit(app.exec_()) if __name__ == "__main__": a = main()ผลลัพธ์
ติดตามบทความต่อไปนะครับ :)
ขอบคุณครับ
แก้ตอนท้ายเล็กน้อยครับ
ตอบลบdef main():
app = QtGui.QApplication(sys.argv)
mySW = ControlMainWindow()
mySW.show()
sys.exit(app.exec_())
if __name__ == "__main__":
main()
ขอบคุณครับ :)
ลบ