一、單行文本框
- QLineEdit 是只能單行編輯的文本框,也叫單行輸入框
- 信號:文本被修改
- 當文本框中的內容被鍵盤編輯,被點擊就會發出 textChanged 信號,可以這樣指定處理該信號的函數
line.textChanged.connect(function)
- Qt 在調用這個信號處理函數時,傳入的參數就是文本框目前的內容字符串
- 信號:按下回車鍵
-
當用戶在文本框中任何時候按下回車鍵,就會發出 returnPressed 信號
-
有時我們需要處理這種情況,比如登錄界面,用戶輸完密碼直接按回車鍵就進行登錄處理,比再用鼠標點擊登錄按鈕快捷的多,可以指定處理 returnPressed 信號,如下所示
line.returnPressed.connect(function)
- 注意:只有單行輸入框才有 returnPressed 方法,多行輸入框則沒有該方法,強行使用則報錯
- 方法:獲取文本
- 通過 text 方法獲取編輯框內的文本內容,如下所示
text = line.text()
print(text)
- 方法:設置提示
- 通過 setPlaceholderText 方法可以設置提示文本內容,如下所示
line.setPlaceholderText("請輸入用戶名")
- 方法:設置文本
- 通過 setText 方法設置編輯框內的文本內容為參數里面的文本字符串,但是會覆蓋原來所有的內容(原來的所有內容會被清除),例如
line.setText("哈哈哈")
- 方法:插入文本
- 通過 insert 方法在編輯框內插入指定的字符串,該方法與setText類似,不同的是,該方法不會覆蓋原來的內容,而是追加,在原有的內容末尾添加字符串
line.insert("你好呀!")
- 方法:清除所有文本
- clear 方法可以清除編輯框內所有的文本內容,例如
line.clear() # 會刪除編輯框內所有的內容
- 方法:拷貝文本到剪貼板
- copy 方法可以拷貝當前選中文本到剪貼板,例如
line.copy()
- 方法:粘貼剪貼板文本
- paste 方法可以把剪貼板內容,拷貝到編輯框當前光標所在處,例如
line.paste()
二、多行純文本框
-
多行文本框在 QWidget 里面有兩個:QPlainTextEdit(純文本框) 和 QTextEdit(富文本框)
-
我們用的最多的就是純文本框,而 QPlainTextEdit 是可以 多行 的純文本編輯框
- 信號:文本被修改
- 與單行文本框一樣,當文本框中的內容被鍵盤編輯,被點擊就會發出 textChanged 信號,可以這樣指定處理該信號的函數
more_edit.textChanged.connect(function)
- 信號:光標位置改變
- 當文本框中的光標位置變動,就會發出 cursorPositionChanged 信號,可以這樣指定處理該信號的函數
more_edit.cursorPositionChanged.connect(function)
- 方法:獲取文本
- 與單行文本框不同,多行文本框通過 toPlainText 方法獲取編輯框內的文本內容
test = more_edit.toPlainText()
print(test)
- 方法:獲取選擇文本
# 獲取 QTextCursor 對象
textcursor = more_edit.textCursor()
select_text = textcursor.selectedText()
- 方法:設置提示
- 與單行文本一樣,多行文本設置提示通過 setPlaceholderText 方法可以設置提示文本內容
more_edit.setPlaceholderText("你好呀!")
- 方法:設置文本
- 與單行文本框不同,多行文本設置文本通過 setPlainText 方法設置編輯框內的文本內容為參數里面的文本字符串,光標任然在最開始的位置
more_edit.setPlainText("哈哈哈")
- 原來的所有內容會被清除
- 方法:在光標處插入文本
- 通過 insertPlainText 插入指定內容,該方法與 setPlainText 不同,該方法不會覆蓋原來的內容,而是追加,在原來的文本內容后面追加參數里面的字符串
more_edit.insertPlainText("python")
- 注意:這種方法不會在添加文本前自動換行
- 方法:在末尾添加文本
- 通過 appendPlainText 方法在編輯框末尾添加文本內容
more_edit.appendPlainText("你好呀")
- 注意:這種方法會在添加文本前 自動換行,然后添加參數里面的字符串
- 方法:清除所有文本
- clear 方法可以清除編輯框內所有的文本內容
more_edit.clear() # 該方法會清除編輯框內所有的內容
- 方法:拷貝文本到剪貼板
- copy 方法可以拷貝當前選中文本到剪貼板
more_edit.copy()
- 方法:粘貼剪貼板文本
- paste 方法可以把剪貼板內容,拷貝到編輯框當前光標所在處
more_edit.paste()
三、文本瀏覽框
-
QTextBrowser 是 只能查看文本 控件
-
通常用來顯示一些操作日志信息、或者不需要用戶編輯的大段文本內容
-
該控件 獲取文本、設置文本、清除文本、剪貼板復制粘貼 等等, 都和上面介紹的多行純文本框是一樣的
-
下面我們主要講解不同點
- 方法:在末尾添加文本
- 通過 append 方法在編輯框末尾添加文本內容,在添加文本前,自動換行,再添加文本
browsertext.append("你好")
-
有時,瀏覽框里面的內容長度超出了可見范圍,我們在末尾添加了內容,往往希望控件自動翻滾到當前添加的這行
-
可以通過 ensureCursorVisible 方法來實現
browsertext.append("你好")
browsertext.ensureCursorVisible()
- 方法:再光標處插入文本
- 通過 insertPlainText 方法在編輯框末尾添加文本內容
browsertext.insertPlainText("哈哈哈")
- 注意:這種方法不會在添加文本前自動換行
四、標簽
- QLabel 就是常見的標簽,可以用來顯示文字(包括純文本和富文本)、圖片 甚至動畫
內容 | 設置 |
---|---|
純文本 | 將字符串傳遞給 setText() |
富文本 | 將富文本傳遞給 setText() |
圖片 | 將 QPixmap 對象傳遞給 setPixmap() |
動畫 | 將 QMovie 對象傳遞給 setMovie() |
數字 | 將 int或 double數字傳遞給 setNum(),將數字轉為純文本 |
空 | 與純文本相同,這是默認的,由 clear()設置 |
- 方法:改變文本
- 代碼中可以使用 setText 方法來改變標簽文本內容,例如
label.setText("我是一個標簽")
- 顯示圖片
- QLabel 可以用來顯示圖片,有時一個圖片可以讓界面好看很多,如下圖所示
pix = QPixmap("logo1.png")
label.setPixmap(pix)
- 顯示換行
-
當QLabel內容較多的時候,里面的內容可以換行
-
將 WordWrap 的屬性設置為 True,實現自動換行,默認是不能自動換行的
label = QLabel(QWidget)
label.setWordWarp(True)
- 對齊方式
-
QLabel內容的對齊方式:這里我們給出了三個:左中、中間、右中
-
水平標志是:
對齊方式 | 描述 |
---|---|
Qt.AlignLeft | 靠左邊緣對齊 |
Qt.AlignRight | 靠右邊緣對齊 |
Qt.AlignHCenter | 水平居中 |
- 垂直標志是:
對齊方式 | 描述 |
---|---|
Qt.AlignTop | 靠上端對齊 |
Qt.AlignBotton | 靠下端對齊 |
Qt.AlignVCenter | 垂直居中 |
- 一次最多可以使用一個水平和一個垂直標志。當然凡是也有例外,下面的就可以可表現出兩個屬性。
- Qt.AlignCenter: 水平、垂直居中