前言
1、展示文本輸入框的使用。
2、幾種按鍵的使用方法。
3、單選按鍵時(shí)候,狀態(tài)切換的槽函數(shù)怎么寫。
一、文本輸入-QTextEdit
1.1 代碼
'''
#Author :susocool
#Creattime:2024/2/14
#FileName:023-QtextEdit多行輸入文本
#Description:
'''
from PyQt5.QtWidgets import *
import sys
class QTextEditDemo(QWidget):
def __init__(self):
super(QTextEditDemo, self).__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('多行文本輸入')
self.resize(300,200)
self.textEdit = QTextEdit()
self.buttonText = QPushButton('顯示文本')
self.buttonHTML = QPushButton('顯示HTML')
layout = QVBoxLayout()
layout.addWidget(self.textEdit)
layout.addWidget(self.buttonText)
layout.addWidget(self.buttonHTML)
self.setLayout(layout)
self.buttonText.clicked.connect(self.onClick_ButtonText)
self.buttonHTML.clicked.connect(self.onClick_ButtonHTML)
def onClick_ButtonText(self):
self.textEdit.setPlainText('HEllO WORLD,世界~') # 純文本
def onClick_ButtonHTML(self):
self.textEdit.setHtml('<font color = "blue" size = 10 >HELLO WROLD</font>')
if __name__ == '__main__':
app = QApplication(sys.argv)
ui = QTextEditDemo()
ui.show()
sys.exit(app.exec_())
1.2 運(yùn)行結(jié)果
文本顯示
HTML顯示
二、QPushButton
類型
- QAstractButton-按鈕控件的基類
它提供了一些通用的方法和信號,可以用于派生其他類型的按鈕。一般情況下,你不會(huì)直接使用 QAbstractButton 類。 - AToolButton - 工具按鈕
- QPushButton -普通的按鈕
- QRadioButton -單選按鈕
- QcheckBox -復(fù)選框
2.1.1 按鈕上添加文本
有兩種方法
self.button1 = QPushButton( '按鈕1' )
self.button1.setText('First Button')
兩種展示結(jié)果是一樣的。
2.1.2 按鍵的彈跳效果
self.button1.setCheckable(True) # 將按鈕設(shè)置為可選中狀態(tài)。這意味著用戶可以點(diǎn)擊按鈕以切換其選中狀態(tài)。
self.button1.toggle()
沒按下時(shí)候
按下的情況
打印獲取按下的按鍵
self.button1.clicked.connect(lambda: self.whichButton(self.button1))
lambda
是 Python 中的一個(gè)關(guān)鍵字,用于創(chuàng)建小而簡潔的匿名函數(shù)。匿名函數(shù)是指沒有具體名稱的函數(shù),通常用于只需要一次性使用的簡單函數(shù)場景。
這個(gè)匿名函數(shù)的作用是在調(diào)用時(shí),執(zhí)行 self.whichButton(self.button1) 這個(gè)方法。匿名函數(shù)沒有傳入?yún)?shù),因此它會(huì)直接調(diào)用 self.whichButton(self.button1) 方法,并將 self.button1 作為參數(shù)傳遞進(jìn)去。
使用 lambda 創(chuàng)建匿名函數(shù)的好處在于,能夠在不需創(chuàng)建獨(dú)立函數(shù)的情況下,快速定義一個(gè)簡單的函數(shù)功能,并在需要時(shí)直接傳遞和調(diào)用。
2.1.3 兩個(gè)信號可以綁定一個(gè)槽。
2.1.4 帶圖標(biāo)的按鍵
運(yùn)行結(jié)果
2.1.5 按鍵不可用以及回車默認(rèn)
完整代碼
'''
#Author :susocool
#Creattime:2024/2/14
#FileName:024-Button
#Description:
'''
import sys
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
class QPushButtonDemo(QDialog):
def __init__(self):
super(QPushButtonDemo, self).__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('Button')
self.resize(300,300)
self.button1 = QPushButton( '按鈕1' )
# self.button1.setText('First Button')
self.button1.setCheckable(True) # 將按鈕設(shè)置為可選中狀態(tài)。這意味著用戶可以點(diǎn)擊按鈕以切換其選中狀態(tài)。
self.button1.toggle()
self.button2 = QPushButton('圖像按鈕')
self.button2.setIcon(QIcon('./管理困難.png'))
self.button3 = QPushButton('不可用')
self.button3.setEnabled(False)
self.button4 = QPushButton('&Mybutton') # 添加熱鍵Alt+M 即可選中
self.button4.setDefault(True) # 將按鈕設(shè)置為默認(rèn)按鈕。默認(rèn)按鈕在界面中按下 Enter 鍵時(shí)被激活
#(默認(rèn)情況下,第一個(gè)添加到窗口的按鈕就是默認(rèn)按鈕)
self.button1.clicked.connect(lambda: self.whichButton(self.button1))
self.button1.clicked.connect(self.buttonState)
self.button2.clicked.connect(lambda:self.whichButton(self.button2))
self.button4.clicked.connect(lambda:self.whichButton(self.button4))
layout = QVBoxLayout()
layout.addWidget(self.button1)
layout.addWidget(self.button2)
layout.addWidget(self.button3)
layout.addWidget(self.button4)
self.setLayout(layout)
def whichButton(self,btn):
print("被單擊的按鈕是<" + btn.text() + '>')
def buttonState(self):
if self.button1.isChecked():
print('按鍵1被選中')
else:
print("按鍵1未被選中")
if __name__ == '__main__':
app = QApplication(sys.argv)
ui = QPushButtonDemo()
ui.show()
sys.exit(app.exec_())
運(yùn)行結(jié)果
2.2 單選按鍵控件
這段主要體會(huì)狀態(tài)切換時(shí)候的槽函數(shù)怎么寫。
'''
#Author :susocool
#Creattime:2024/2/15
#FileName:025-單選按鍵控件
#Description:
'''
import sys
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
class RadioButtonDemo(QWidget):
def __init__(self):
super(RadioButtonDemo, self).__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('可選按鍵')
self.button1 = QRadioButton('單選按鈕1')
self.button1.setCheckable(True)
self.button2 = QRadioButton('單選按鈕2')
layout = QHBoxLayout()
layout.addWidget(self.button1)
layout.addWidget(self.button2)
self.setLayout(layout)
self.button1.toggled.connect(self.buttonState) # 狀態(tài)切換
self.button2.toggled.connect(self.buttonState)
def buttonState(self):
radioButton = self.sender()
if radioButton.isChecked() == True:
print('<' + radioButton.text() + '>被選中')
else:
print ( '<' + radioButton.text () + '>被取消選中狀態(tài)')
if __name__ == '__main__':
app = QApplication(sys.argv)
ui = RadioButtonDemo()
ui.show()
sys.exit(app.exec_())
運(yùn)行結(jié)果
2.3 復(fù)選框(多選框)
'''
#Author :susocool
#Creattime:2024/2/15
#FileName:026-復(fù)選框
#Description:三種形式的復(fù)選框
'''
import sys
from PyQt5.QtCore import *
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
class QCheckBoxDemo(QWidget):
def __init__(self):
super(QCheckBoxDemo, self).__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('復(fù)選框')
self.checkBox1 = QCheckBox('復(fù)選框控件1')
self.checkBox1.setChecked(True)
self.checkBox2 = QCheckBox('普通復(fù)選框')
self.checkBox3 = QCheckBox('半選中')
self.checkBox3.setChecked(True)
self.checkBox3.setCheckState(Qt.PartiallyChecked)
self.checkBox1.stateChanged.connect(lambda:self.checkboxState(self.checkBox1))
self.checkBox2.stateChanged.connect(lambda:self.checkboxState(self.checkBox2))
self.checkBox3.stateChanged.connect(lambda:self.checkboxState(self.checkBox3))
layout = QHBoxLayout()
layout.addWidget(self.checkBox1)
layout.addWidget(self.checkBox2)
layout.addWidget(self.checkBox3)
self.setLayout(layout)
def checkboxState(self,cb):
# checkState()返回值是一個(gè)整數(shù),而在打印的時(shí)候我們希望以字符串的形式展現(xiàn),因此注意格式?。。?/span>
checkState1 = self.checkBox1.text() + ',isChecked=' + str(self.checkBox1.isChecked()) + ',checkState = ' + str(self.checkBox1.checkState()) + ' \n '
checkState2 = self.checkBox2.text() + ',isChecked=' + str(self.checkBox2.isChecked()) + ',checkState = ' + str(self.checkBox2.checkState()) + ' \n '
checkState3 = self.checkBox3.text() + ',isChecked=' + str(self.checkBox3.isChecked()) + ',checkState = ' + str(self.checkBox3.checkState()) + ' \n '
print(checkState1 + checkState2 + checkState3)
if __name__ == '__main__':
app = QApplication(sys.argv)
ui = QCheckBoxDemo()
ui.show()
sys.exit(app.exec_())
運(yùn)行結(jié)果
未選中狀態(tài)
選擇復(fù)選框1
普通復(fù)選框
半選中
簡單總結(jié)下來就是復(fù)選框有兩種狀態(tài),而半選中框有三種狀態(tài)。
2.4 下拉列表按鍵
'''
#Author :susocool
#Creattime:2024/2/15
#FileName:027-下拉列表按鍵
#Description:
'''
import sys
from PyQt5.QtWidgets import *
class QComboBoxDemo(QWidget):
def __init__(self):
super(QComboBoxDemo, self).__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('下拉列表')
self.resize(300,100)
self.label = QLabel('請選擇編程語言')
self.combo = QComboBox()
self.combo.addItem('C++')
self.combo.addItem('Python')
self.combo.addItems(['C語言','C#','Java']) # 注意這里是s
# 當(dāng)前索引變化
self.combo.currentIndexChanged.connect(self.selectionChange)
layout = QVBoxLayout()
layout.addWidget(self.combo)
layout.addWidget(self.label)
self.setLayout(layout)
# currentIndexChanged默認(rèn)傳遞兩個(gè)參數(shù),因此槽設(shè)置兩個(gè)參數(shù)
def selectionChange(self,i):
self.label.setText(self.combo.currentText())
self.label.adjustSize() # 自適應(yīng)調(diào)整大小
for count in range(self.combo.count()):
print('item' + str(count) + '='+self.combo.itemText(count))
print('current index',i,'selection changed',self.combo.currentText())
if __name__ == '__main__':
app = QApplication(sys.argv)
ui = QComboBoxDemo()
ui.show()
sys.exit(app.exec_())
運(yùn)行結(jié)果
文章來源:http://www.zghlxwxcb.cn/news/detail-827749.html
總結(jié)
這篇文章依舊沒有總結(jié)文章來源地址http://www.zghlxwxcb.cn/news/detail-827749.html
到了這里,關(guān)于【PyQt】11-QTextEdit、QPushButton的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!