get paid

Get paid for the tasks you do online

2019年1月27日 星期日

PyQT5 教學 -- QLineEdit

QLineEdit 也是很常用的物件, 它允許使用者輸入資料
這邊就用一個範例當使用者輸入時 會在下面用 QLable 對應輸出

程式如下
為了讓大家漸漸了解 物件的寫法, 下面就改用物件的方式
為何會用物件呢 ? 當程式功能越來越多, 就會把 UI 跟 計算部分分開成不同py 欓
如果UI 是用class 寫得要呼叫就會比較容易

首先當然是 import package..


import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QLineEdit, QPushButton


再來就是建立一個 example 物件這個物件繼承了 QMainWindow 這個 pyqt 物件
這個我們之前寫法 example =  QMainWindow() 意是差不多
但當我們要對這物件作很多處理時, 如加入很多 button 用 class 定義的方式比較容易修改
也比較容易理解


class Example(QMainWindow):

# 再來我們要初始化Example 這個物件

    def __init__(self):
        super().__init__()   # 表示 Example() 可以調用父類別的function

        self.lineEntry = QLineEdit(self) # 加入QLineEdit 到此物件, 下面會在解說
        self.lineEntry.move(16,16) # 位置
        self.lineEntry.resize(200,40) # 大小

        self.qlabel = QLabel(self) #加入QLabel 到此物件
        self.qlabel.move(16,64)# 位置
        #當 QLineEdit 物件的內容修改時, 執行 onChanged 這個 function
        # 因為 onChange 是在這個 class 內, 所以前面要加 self.
        self.lineEntry.textChanged.connect(self.onChanged)

        self.setGeometry(50,50,320,200)# 位置
        self.setWindowTitle("QLineEdit Example")# 大小
        self.show() # 顯示

# QLine Edit 的曹, 當 QLineEdit 文字有改變時會呼叫onChanged, 並帶入文字到 text 中
# 當 123 輸入, text 就是 123

    def onChanged(self, text):

        text = "Your Enter is " + text # 可以對文字再處理
        self.qlabel.setText(text) # 將 text 秀在 QLabel 上
        self.qlabel.adjustSize()

#下面的部分跟 function ㄧ樣

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


之前我們再 Qwiget 內在加入一個 物件時
寫法如下
lineEntry = QLineEdit( 主物件) 但我們已經在主物件內了
寫法就前面加 self , 主物件也改成 self ,變成如下
self.lineEntry = QLineEdit(self)



沒有留言:

張貼留言

ChartGPT 學 python 很強喔

 ChartGPT 最近很紅 ,  前一陣子有一些小 module  本來想 google  一下 語法 但發現用 chartGPT 直接請他給 sample code 反而較快 所以只要你有基本 知識 ChartGPT 可以加速你的開發 好用喔