from base_control.action_class import Action
from PySide2.QtWidgets import QApplication
from PySide2.QtUiTools import QUiLoader
from PySide2.QtCore import QFile,QSize
from PySide2.QtGui import QIcon
from PySide2.QtWidgets import QMessageBox
class Control1(Action):
def __init__(self):
ui_file = QFile("./uiDic/clickButton.ui")
ui_file.open(QFile.ReadOnly)
ui_file.close()
# 从文件中加载UI定义
# 从 UI 定义中动态 创建一个相应的窗口对象
# 注意:里面的控件对象也成为窗口对象的属性了
# 比如 self.ui.button , self.ui.textEdit
self.ui = QUiLoader().load(ui_file)
def buttonControl(self):
'''
普通按钮
:return:
'''
self.ui.clickButton.setIcon(QIcon('./uiDic/lol.jpg')) # 使用图片设置按钮图标
self.ui.clickButton.setIconSize(QSize(30, 30)) # 设置图标大小
self.ui.clickButton.setText("小跳蛙") # 设置按钮文本
self.ui.clickButton.setEnabled(True) # 设置按钮是否被禁用,False为禁用,True为启用,应用场景:某些操作后按钮不允许点击
self.ui.clickButton.clicked.connect(self.display) # 将点击的信号连接到clickButton方法上,即点击后执行连接的方法
def lineEditControl(self):
'''
单行文输入框
:return:
'''
# .textChanged()函数会获取文本框值改变的信号,当获取这个信号时则执行后面的方法
self.ui.lineEdit.textChanged.connect(self.handleTextChange) #将单行文本框中输入的值作为参数传递给handleTextChange方法
self.ui.lineEdit.returnPressed.connect(self.printText) # 在光标在单行文本框内时,点击回车就调用连接的方法
self.ui.lineEdit.setPlaceholderText('请在这里输入URL') # 设置单行输入框内的暗纹提示语
self.ui.lineEdit.setText("预设的内容") # 在输入框内预设内容
text = self.ui.lineEdit.text() # 获取单行文本框的输入的值
QMessageBox.about(self.ui, '点击结果', text) # 弹窗展示文本框输入的结果
def plainTextEditControl(self):
'''
多行文本输入框
:return:
'''
self.ui.plainTextEdit.textChanged.connect(self.handleTextChange1) # Qt在调用这个信号处理函数时,不会传入文本框目前的内容字符串,作为参数,这个行为 和 单行文本框不同。
self.ui.plainTextEdit.cursorPositionChanged.connect(self.handleTextChange1) # 当文本框中的光标位置变动,就会发出 cursorPositionChanged 信号,可以这样指定处理该信号的函数
text = self.ui.plainTextEdit.toPlainText() # 获取多行文本框的内容
# 获取 QTextCursor 对象
textCursor =self.ui.plainTextEdit.textCursor()
selection = textCursor.selectedText()
self.ui.plainTextEdit.setPlaceholderText('测试多行输入文本框的暗纹提示') # 设置多行输入框内的暗纹提示语
self.ui.plainTextEdit.setPlainText("设置多行输入文本框内的默认值") # 设置多行文本框的内默认值
self.ui.plainTextEdit.appendPlainText('末尾添加内容并换行') # 在编辑框末尾添加文本内容并自动换行
self.ui.plainTextEdit.insertPlainText('小工具') # 光标处插入文本,不会自动换行
self.ui.plainTextEdit.document().setMaximumBlockCount(1000) # 设置多行文本框的最大行数
def textBrowserControl(self):
'''
通常用来显示一些操作日志信息、或者不需要用户编辑的大段文本内容,内容无法编辑
获取文本、设置文本、清除文本、光标出添加文本 等等, 都和上面介绍的 多行纯文本框是一样的
:return:
'''
self.ui.textBrowser.append('多行展示文本框末尾添加文本') # 多行展示文本框末尾添加文本,不会自动换行
self.ui.textBrowser.ensureCursorVisible() #在末尾添加了内容,自动翻滚到当前添加的这行,自动换行
def labelControl(self):
'''
常见的标签,可以用来显示文字(包括纯文本和富文本)、图片 甚至动画。
怎么用QLabel 显示图片呢?
可以在 Qt Designer上 属性编辑器 QLabel 栏 的 pixmap 属性设置中选择图片文件指定。
:return:
'''
self.ui.label.setText("自定义标签框")
def pushButton(self):
self.ui.pushButton.clicked.connect(self.clearLine)
def clearLine(self):
'''
文本清除
:return:
'''
return self.ui.lineEdit.clear() # .clear()清除输入框内的内容
def handleTextChange(self,inputText): # 当单行文本框调用该函数时,会将文本框内输入的字符串当做参数传入该方法,即:inputText=输入值
'''
捕捉文本框内容变化执行对应的方法
:param inputText:
:return:
'''
print(inputText)
def handleTextChange1(self):
print(1)
def display(self):
'''
提示文本弹窗
:return:
'''
QMessageBox.about(self.ui, '信息', '信息提示文本') # 弹窗展示文本框输入的结果
QMessageBox.information(self.ui, '信息', '信息提示文本')
QMessageBox.critical(self.ui, '错误', '错误提示文本!')
QMessageBox.warning(self.ui, '警告', '警告提示文本')
def printText(self):
print("hahah")
app = QApplication([])
stats = Control1()
stats.pushButton()
# stats.buttonControl()
stats.ui.show()
app.exec_()
QT Pyside2 常用按钮控件的方法(一)
于 2022-05-19 22:38:35 首次发布