PyQt5 QTextEdit / QLineEdit / QSpinBox / QComboBox – 设置文本大小写
PyQt5是Python绑定的Qt库,提供了各种GUI组件。QTextEdit / QLineEdit / QComboBox是其中的一个,它提供了一个简单的输入框,但是默认情况下它不会使输入的字符都大写。本文将介绍如何使用PyQt5 QTextEdit / QLineEdit / QSpinBox / QComboBox实现使文本大写.
实现很简单,有两种方法操作(一种在不改变内容的情况下显示大写,另一种直接将内容转换为大写)。
1. 设置QSS样式,在控件中显示为大写,但实际内容在输入时是小写,在读取内容时显示的依然是小写(即内容不变,但控件显示内容为大写字符)。
self.lineEdit = QLineEdit(self)
self.lineEdit.setStyleSheet('text-transform: uppercase;')
/*这里通过setStyleSheet()方法可为QTextEdit / QLineEdit / QSpinBox / QComboBox任意一个对象设置了一个CSS样式,text-transform属性将输入的文本全部转换为大写。*/
text-transform属性定义及使用说明
值 | 描述 |
---|---|
none | 默认。定义带有小写字母和大写字母的标准的文本。 |
capitalize | 文本中的每个单词以大写字母开头。 |
uppercase | 定义仅有大写字母。 |
lowercase | 定义无大写字母,仅有小写字母。 |
inherit | 规定应该从父元素继承 text-transform 属性的值。 |
2. 通过文本框信号槽直接将内容转化为大写(所见即所得)
在文本框中输入任意内容时,该内容会自动转换为大写形式。与QSS的转换方式不同,QSS只是以控件方式显示,而以下方法却是直接将内容转换为大写。
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
...
self.lineEdit = QLineEdit(self)
self.lineEdit.textChanged.connect(self.onTextChanged)
def onTextChanged(self, text):
self.lineEdit.setText(text.upper())