1. 程式人生 > 實用技巧 >Python 開發GUI之UI介面的三種引入形式

Python 開發GUI之UI介面的三種引入形式

【純手工程式碼】

# -*- coding: utf-8 -*-
# Author:Jack LEE 
# FileName:main
# CreatedDate: 2020/9/17

# 手寫程式碼的基礎框架
# 匯入需要的庫and元件
from PySide2.QtWidgets import QApplication, QMainWindow, QPushButton, QTextEdit

# 初始化函式
def sayHello():
    textEdit.setText("hello")

# 初始化控制元件
app = QApplication([])
window = QMainWindow()
window.resize(800, 600)
window.move(300, 310)
window.setWindowTitle('MainWindow')
textEdit = QTextEdit("init-information", window)
textEdit.resize(500, 400)
textEdit.move(40, 50)
# textEdit.setText("init-information")
button = QPushButton('pushButton', window)
button.move(600, 300)
button.resize(130, 50)
# button.setText('pushButton')

# 編寫訊號與槽,以及影象化

button.clicked.connect(sayHello)
window.show()
app.exec_()


【直接載入UI檔案】

  

# -*- coding: utf-8 -*-
# Author:Jack LEE 
# FileName:UIloader
# CreatedDate: 2020/9/17

import sys
from PySide2.QtUiTools import QUiLoader
from PySide2.QtWidgets import QApplication
from PySide2.QtCore import QFile


# 定義觸發函式
def sayHello():
    window.textEdit.setText("hello world!")
    
print("Button click!") if __name__ == "__main__": app = QApplication(sys.argv) ui_file = QFile("UI/mainWindow.ui") ui_file.open(QFile.ReadOnly) loader = QUiLoader() window = loader.load(ui_file) ui_file.close() # 在這裡加入訊號觸發、空間位置控制等程式碼 window.pushButton.clicked.connect(sayHello)
# 新增結束 window.show() sys.exit(app.exec_())

【載入UI檔案編譯後的PY檔案】

# -*- coding: utf-8 -*-
# Author:Jack LEE 
# FileName:PYloader
# CreatedDate: 2020/9/17

import sys
# from sys import argv
# 如果使用sys 那將意味著將要打包很多多西,所以可能會出現問題
from mainWindow import Ui_MainWindow
from PySide2.QtWidgets import QMainWindow, QApplication


# 定義訊號和槽函式
def signleAndSlot():
    UI.pushButton.clicked.connect(sayHello)


# 定義觸發函式
def sayHello():
    UI.textEdit.setText("Hello World!")


class MainWindow(QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    main = MainWindow()
    UI = main.ui
    # 呼叫訊號和槽的函式以及空間管理等函式
    signleAndSlot()
    main.show()
    sys.exit(app.exec_())