QTextEdit
這個是多行文本框,可以顯示多行文本内容,文本超出範圍後 ,可以顯示垂直滾動條,除了顯示文本,還可以顯示HTML文檔。

代碼:
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import QApplication,QWidget,QTextEdit,QVBoxLayout,QPushButton
class TextEditDemo(QWidget):
def __init__(self,parent = None):
super(TextEditDemo,self).__init__(parent)
self.setWindowTitle("QTextEdit 例子")
self.resize(300,270)
self.textEdit = QTextEdit()
self.btnPress1 = QPushButton("顯示文本")
self.btnPress2 = QPushButton("顯示Html")
layout = QVBoxLayout()
self.setLayout(layout)
layout.addWidget(self.textEdit)
layout.addWidget(self.btnPress1)
layout.addWidget(self.btnPress2)
self.btnPress1.clicked.connect(self.btnPress1_Clicked)
self.btnPress2.clicked.connect(self.btnPress2_Clicked)
def btnPress1_Clicked(self):
self.textEdit.setPlainText("hello PyQt5!\n單擊按鈕")
def btnPress2_Clicked(self):
self.textEdit.setHtml("<font color = 'red ' size ='6'><red> Hello PyQt!\n單擊按鈕.</font>")
self.textEdit.append("hello PyQt5!\n單擊按鈕")
if __name__ == "__main__":
app = QApplication(sys.argv)
form = TextEditDemo()
form.show()
sys.exit(app.exec_())
QAbstractButton
常見的按鈕類:QPushButton、QToolButton、QRadioButton、QCheckBox 都是繼承這個 QAbstractButton ,根據不同的場景通過圖形顯示出來。
QPushButton
常見的按鈕就是使用的這個,還有一些響應按鈕事件。
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
class Form(QDialog):
def __init__(self, parent=None):
super(Form,self).__init__(parent)
layout = QVBoxLayout()
self.btn1 = QPushButton("Button1")
self.btn1.setCheckable(True) #設定選擇效果
self.btn1.toggle() #狀态切換
self.btn1.clicked.connect(lambda :self.switchbtn(self.btn1))
self.btn1.clicked.connect(self.btnstate)
layout.addWidget(self.btn1)
self.btn2 = QPushButton("image")
self.btn2.setIcon(QIcon(QPixmap("./images/12.jpg")))
self.btn2.clicked.connect(lambda: self.switchbtn(self.btn2))
layout.addWidget(self.btn2)
self.btn3 = QPushButton("Disable")
self.btn3.setEnabled(False)
layout.addWidget(self.btn3)
self.btn4 = QPushButton("&Download")
self.btn4.setDefault(True)
self.btn4.clicked.connect(lambda: self.switchbtn(self.btn4))
layout.addWidget(self.btn4)
self.setLayout(layout)
def btnstate(self):
if self.btn1.isChecked():
print("button Pressed")
else:
print("button released")
def switchbtn(self,btn):
print("clicked button is " + btn.text())
if __name__ == "__main__":
app = QApplication(sys.argv)
form = Form()
form.show()
sys.exit(app.exec_())
QRadioButton
這個按鈕一般以添加在QGroupBox 或者在QButtonGroup中,這樣在這個group中,變可以使用。
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
class Radiodemo(QWidget):
def __init__(self, parent=None):
super(Radiodemo, self).__init__(parent)
layout = QHBoxLayout()
self.btn1 = QRadioButton("吉法師")
self.btn1.setChecked(True)
self.btn1.toggled.connect(lambda :self.btnstate(self.btn1))
layout.addWidget(self.btn1)
self.btn2 = QRadioButton("icy")
self.btn2.toggled.connect(lambda: self.btnstate(self.btn2))
layout.addWidget(self.btn2)
self.setLayout(layout)
self.setWindowTitle("誰是凡爾賽獎獲得者,請選擇")
def btnstate(self,btn):
if btn.text() == "吉法師":
if btn.isChecked() == True:
print(btn.text() + " is NB")
else:
print(btn.text() + " is LG")
if btn.text() == "icy":
if btn.isChecked() == True:
print(btn.text() + " is NB")
else:
print(btn.text() + " is LG")
if __name__ == "__main__":
app = QApplication(sys.argv)
form = Radiodemo()
form.show()
sys.exit(app.exec_())
QComboBox
本例子,使用了QSpinBox與QSlider 滑動條的使用。
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
class ComBoxDemo(QWidget):
def __init__(self, parent=None):
super(ComBoxDemo, self).__init__(parent)
self.resize(300,150)
self.setWindowTitle("QComBox 例子")
layout = QVBoxLayout()
self.lb1 = QLabel("")
self.cb = QComboBox()
self.cb.addItem("C")
self.cb.addItem("C++")
self.cb.addItems(["Java", "C#", "Python","Js"])
self.cb.currentIndexChanged.connect(self.selectionchange)
layout.addWidget(self.cb)
layout.addWidget(self.lb1)
#QSpinBox
self.lb2 =QLabel("current Value: ")
self.lb2.setAlignment(Qt.AlignCenter)
layout.addWidget(self.lb2)
self.sp = QSpinBox()
layout.addWidget(self.sp)
self.sp.valueChanged.connect(self.valuechange)
#QSlider
self.lb3= QLabel("比卡丘不皮")
self.lb3.setAlignment(Qt.AlignCenter)
layout.addWidget(self.lb3)
# 水準方式
self.sl = QSlider(Qt.Horizontal)
# 最小與最大值
self.sl.setMaximum(50)
self.sl.setMinimum(10)
#步長
self.sl.setSingleStep(3)
#目前值
self.sl.setValue(20)
#刻度位置,刻度在下方
self.sl.setTickPosition(QSlider.TicksBelow)
#設定刻度間隔
self.sl.setTickInterval(5)
layout.addWidget(self.sl)
self.sl.valueChanged.connect(self.valuechangeS)
self.setLayout(layout)
def selectionchange(self,i):
self.lb1.setText(self.cb.currentText())
print("Items in the list are :")
for count in range(self.cb.count()):
print('item '+str(count) + " = "+self.cb.itemText(count))
#prinf("Current index "+str(i)+ "selection changed"+self.cb.currentText())
print("Current index {} selection changed {}".format(i,self.cb.currentText()))
def valuechange(self):
self.lb2.setText("current Value: " + str(self.sp.value()))
def valuechangeS(self):
print("current slider value = %s " % self.sl.value())
size = self.sl.value()
self.lb3.setFont(QFont("Arial",size))
if __name__ == "__main__":
app = QApplication(sys.argv)
form = ComBoxDemo()
form.show()
sys.exit(app.exec_())
今天先記錄到這裡,希望能對你有些幫助。