0%

PyQt4--《五》文本输入QLineEdit、 QTextEdit

最常使用的输入框QLineEdit,可供输入一行文字。输入多行文字时需要使用QTextEdit。

单行输入QLineEdit

类的函数

  • setAlignment():对齐文本,参数有Qt.AlignLeft、Qt.AlignRight、Qt.AlignCenter、Qt.AlignJustify
  • clear():清除内容
  • setEchoMode():控制输入框中文本的样式,参数有QLineEdit.Normal、QLineEdit.NoEcho、QLineEdit.Password、QLineEdit.PasswordEchoOnEdit
  • setMaxLength():设置输入的字符最大长度
  • setReadOnly():使文本框不可编辑
  • setText():编写程序来设定标题
  • text():取得文本
  • setValidator():设置生效规则。参数有:QIntValidator(限制输入为整数)、QDoubleValidator(浮点数)、QRegexpValidator(正则表达式)
  • setInputMask():通过结合符号来设定输入的规范
  • setFont():设置字体,通过QFont()来设置

类的信号

  • cursorPositionChanged():鼠标移动
  • editingFinished():点击回车或者输入框失去焦点
  • returnPressed():点击回车
  • selectionChanged():所选文本变化
  • textChanged():通过输入或者编程改变了输入框中的文本
  • textEdited():文本被编辑

栗子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#-*-coding:utf-8-*-

import sys
from PyQt4 import QtGui #基本的GUI组件都存放在QtGui这个模块
from PyQt4.QtGui import *
from PyQt4.QtCore import *

class window(QWidget):
def __init__(self, parent=None):
super(window, self).__init__(parent)
self.setGeometry(100,100,400,300)
self.setWindowTitle('test')

edit1 = QLineEdit()
edit1.setValidator(QIntValidator())#只接收整数
edit1.setMaxLength(4)#最多四位
edit1.setAlignment(Qt.AlignCenter)#对齐样式
edit1.setFont(QFont("Arial",20))#设置字体

edit2 = QLineEdit()
edit2.setValidator(QDoubleValidator(0.99,99.99,2))#最多两位小数

edit3 = QLineEdit()
edit3.setInputMask("+99_9999_999999")#设定输入的格式

edit4 = QLineEdit()
edit4.textChanged.connect(self.textchanged)#文本修改事件

edit5 = QLineEdit()
edit5.setEchoMode(QLineEdit.Password) #设定显示模式为密码
edit5.editingFinished.connect(self.enterPress) #编辑结束事件

edit6 = QLineEdit("Hello World")
edit6.setReadOnly(True) #默认文本,且为只读

self.edit7 = QTextEdit()
self.edit7.textChanged.connect(self.text7changed)

flo = QFormLayout()#表单布局
flo.addRow(u"只能输入整数", edit1)
flo.addRow(u"只能输入两位小数", edit2)
flo.addRow(u"设定输入的格式", edit3)
flo.addRow(u"文本修改事件", edit4)
flo.addRow(u"设定显示模式为密码", edit5)
flo.addRow(u"默认文本且只读", edit6)
flo.addRow(unicode("QTextEdit使用示例", 'utf8'), self.edit7)#解决中文显示乱码问题

self.setLayout(flo)

def textchanged(self,text):
print "contents of text box: " + text

def text7changed(self):
data = str(self.edit7.toPlainText().toUtf8())#不转换输入中文会报错!!!!!!!
print "contents of text box: \n" + data

def enterPress(self):
print "edited"

if __name__ == '__main__':
app = QtGui.QApplication(sys.argv) # 每个Pyqt的程序都必须创建一个application对象,application在 QtGui 模块中,sys.argv 参数是命令行中的一组参数。
w = window()
w.show()
sys.exit(app.exec_()) # app.exec_()其实就是QApplication的方法,原来这个exec_()方法的作用是“进入程序的主循环直到exit()被调用”,如果没有这个方法,运行的时候窗口会闪退。