PyQt5 單行文本框(QLineEdit)、多行純文本框(QPlainTextEdit)、文本瀏覽框(QTextBrowser)、標簽(QLabel)


一、單行文本框

  • QLineEdit 是只能單行編輯的文本框,也叫單行輸入框


  1. 信號:文本被修改
  • 當文本框中的內容被鍵盤編輯,被點擊就會發出 textChanged 信號,可以這樣指定處理該信號的函數

line.textChanged.connect(function)

  • Qt 在調用這個信號處理函數時,傳入的參數就是文本框目前的內容字符串
  1. 信號:按下回車鍵
  • 當用戶在文本框中任何時候按下回車鍵,就會發出 returnPressed 信號

  • 有時我們需要處理這種情況,比如登錄界面,用戶輸完密碼直接按回車鍵就進行登錄處理,比再用鼠標點擊登錄按鈕快捷的多,可以指定處理 returnPressed 信號,如下所示


line.returnPressed.connect(function)

  • 注意:只有單行輸入框才有 returnPressed 方法,多行輸入框則沒有該方法,強行使用則報錯
  1. 方法:獲取文本
  • 通過 text 方法獲取編輯框內的文本內容,如下所示

text = line.text()
print(text)

  1. 方法:設置提示
  • 通過 setPlaceholderText 方法可以設置提示文本內容,如下所示

line.setPlaceholderText("請輸入用戶名")

  1. 方法:設置文本
  • 通過 setText 方法設置編輯框內的文本內容為參數里面的文本字符串,但是會覆蓋原來所有的內容(原來的所有內容會被清除),例如

line.setText("哈哈哈")

  1. 方法:插入文本
  • 通過 insert 方法在編輯框內插入指定的字符串,該方法與setText類似,不同的是,該方法不會覆蓋原來的內容,而是追加,在原有的內容末尾添加字符串

line.insert("你好呀!")

  1. 方法:清除所有文本
  • clear 方法可以清除編輯框內所有的文本內容,例如

line.clear()    # 會刪除編輯框內所有的內容

  1. 方法:拷貝文本到剪貼板
  • copy 方法可以拷貝當前選中文本到剪貼板,例如

line.copy()

  1. 方法:粘貼剪貼板文本
  • paste 方法可以把剪貼板內容,拷貝到編輯框當前光標所在處,例如

line.paste()


二、多行純文本框

  • 多行文本框在 QWidget 里面有兩個:QPlainTextEdit(純文本框) 和 QTextEdit(富文本框)

  • 我們用的最多的就是純文本框,而 QPlainTextEdit 是可以 多行 的純文本編輯框


  1. 信號:文本被修改
  • 與單行文本框一樣,當文本框中的內容被鍵盤編輯,被點擊就會發出 textChanged 信號,可以這樣指定處理該信號的函數

more_edit.textChanged.connect(function)

  1. 信號:光標位置改變
  • 當文本框中的光標位置變動,就會發出 cursorPositionChanged 信號,可以這樣指定處理該信號的函數

more_edit.cursorPositionChanged.connect(function)

  1. 方法:獲取文本
  • 與單行文本框不同,多行文本框通過 toPlainText 方法獲取編輯框內的文本內容

test = more_edit.toPlainText()
print(test)

  1. 方法:獲取選擇文本

# 獲取 QTextCursor 對象
textcursor = more_edit.textCursor()
select_text = textcursor.selectedText()

  1. 方法:設置提示
  • 與單行文本一樣,多行文本設置提示通過 setPlaceholderText 方法可以設置提示文本內容

more_edit.setPlaceholderText("你好呀!")

  1. 方法:設置文本
  • 與單行文本框不同,多行文本設置文本通過 setPlainText 方法設置編輯框內的文本內容為參數里面的文本字符串,光標任然在最開始的位置

more_edit.setPlainText("哈哈哈")

  • 原來的所有內容會被清除
  1. 方法:在光標處插入文本
  • 通過 insertPlainText 插入指定內容,該方法與 setPlainText 不同,該方法不會覆蓋原來的內容,而是追加,在原來的文本內容后面追加參數里面的字符串

more_edit.insertPlainText("python")

  • 注意:這種方法不會在添加文本自動換行
  1. 方法:在末尾添加文本
  • 通過 appendPlainText 方法在編輯框末尾添加文本內容

more_edit.appendPlainText("你好呀")

  • 注意:這種方法會在添加文本 自動換行,然后添加參數里面的字符串
  1. 方法:清除所有文本
  • clear 方法可以清除編輯框內所有的文本內容

more_edit.clear()      # 該方法會清除編輯框內所有的內容

  1. 方法:拷貝文本到剪貼板
  • copy 方法可以拷貝當前選中文本到剪貼板

more_edit.copy()

  1. 方法:粘貼剪貼板文本
  • paste 方法可以把剪貼板內容,拷貝到編輯框當前光標所在處

more_edit.paste()


三、文本瀏覽框

  • QTextBrowser只能查看文本 控件

  • 通常用來顯示一些操作日志信息、或者不需要用戶編輯的大段文本內容

  • 官網介紹

  • 該控件 獲取文本設置文本清除文本剪貼板復制粘貼 等等, 都和上面介紹的多行純文本框是一樣的

  • 下面我們主要講解不同點

  1. 方法:在末尾添加文本
  • 通過 append 方法在編輯框末尾添加文本內容,在添加文本,自動換行,再添加文本

browsertext.append("你好")

  • 有時,瀏覽框里面的內容長度超出了可見范圍,我們在末尾添加了內容,往往希望控件自動翻滾到當前添加的這行

  • 可以通過 ensureCursorVisible 方法來實現


browsertext.append("你好")
browsertext.ensureCursorVisible()

  1. 方法:再光標處插入文本
  • 通過 insertPlainText 方法在編輯框末尾添加文本內容

browsertext.insertPlainText("哈哈哈")

  • 注意:這種方法不會在添加文本自動換行

四、標簽

  • QLabel 就是常見的標簽,可以用來顯示文字(包括純文本和富文本)、圖片 甚至動畫
內容 設置
純文本 將字符串傳遞給 setText()
富文本 將富文本傳遞給 setText()
圖片 QPixmap 對象傳遞給 setPixmap()
動畫 QMovie 對象傳遞給 setMovie()
數字 intdouble數字傳遞給 setNum(),將數字轉為純文本
與純文本相同,這是默認的,由 clear()設置

  1. 方法:改變文本
  • 代碼中可以使用 setText 方法來改變標簽文本內容,例如

label.setText("我是一個標簽")

  1. 顯示圖片
  • QLabel 可以用來顯示圖片,有時一個圖片可以讓界面好看很多,如下圖所示

pix = QPixmap("logo1.png")
label.setPixmap(pix)

  1. 顯示換行
  • 當QLabel內容較多的時候,里面的內容可以換行

  • WordWrap 的屬性設置為 True,實現自動換行,默認是不能自動換行的


label = QLabel(QWidget)
label.setWordWarp(True)

  1. 對齊方式
  • QLabel內容的對齊方式:這里我們給出了三個:左中、中間、右中

  • 水平標志是:

對齊方式 描述
Qt.AlignLeft 靠左邊緣對齊
Qt.AlignRight 靠右邊緣對齊
Qt.AlignHCenter 水平居中
  • 垂直標志是:
對齊方式 描述
Qt.AlignTop 靠上端對齊
Qt.AlignBotton 靠下端對齊
Qt.AlignVCenter 垂直居中
  • 一次最多可以使用一個水平和一個垂直標志。當然凡是也有例外,下面的就可以可表現出兩個屬性。
    • Qt.AlignCenter水平、垂直居中


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM