国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

QPushButton按鈕

2023-03-22 07:12 作者:千牛不是牛  | 我要投稿

QPushButton按鈕

QPushButton 是 PyQt6 里的按鈕控件,這篇教學會介紹如何在 PyQt6 窗口里加入 QPushButton 按鈕,并進行一些基本的樣式設定,以及設定點擊按鈕后的行為事件。

快速預覽:

  • 加入 QPushButton 按鈕]

  • QPushButton 位置設定

  • QPushButton 樣式設定

  • 停用 QPushButton

  • QPushButton 點擊事件


加入 QPushButton 按鈕

建立 PyQt6 窗口物件后,透過 QtWidgets.QPushButton(widget) 方法,就能在指定的控件中建立按鈕,下方的程式碼執(zhí)行后,會加入一個 QPushButton 按鈕 ,并使用 setText() 方法加入文字。

?from PyQt6 import QtWidgets
?import sys
?
?app = QtWidgets.QApplication(sys.argv)
?
?Form = QtWidgets.QWidget()
?Form.setWindowTitle('千牛編程思維')
?Form.resize(320, 240)
?
?btn = QtWidgets.QPushButton(Form) ? # 在 Form 中加入一個 QPushButton
?btn.setText('我是按鈕') ? ? ? ? ? ? ? # 按鈕文字
?
?Form.show()
?sys.exit(app.exec())

class 寫法

?from PyQt6 import QtWidgets
?import sys
?
?class MyWidget(QtWidgets.QWidget):
? ? ?def __init__(self):
? ? ? ? ?super().__init__()
? ? ? ? ?self.setWindowTitle('千牛編程思維')
? ? ? ? ?self.resize(320, 240)
? ? ? ? ?self.ui()
?
? ? ?def ui(self):
? ? ? ? ?self.btn = QtWidgets.QPushButton(self) ? # 在 Form 中加入一個 QPushButton
? ? ? ? ?self.btn.setText('我是按鈕') ? ? ? ? ? ? ? # 按鈕文字
?
?if __name__ == '__main__':
? ? ?app = QtWidgets.QApplication(sys.argv)
? ? ?Form = MyWidget()
? ? ?Form.show()
? ? ?sys.exit(app.exec())

image-20230321100718315

QPushButton 位置設定

透過下列 QPushButton 方法,可以將 QPushButton 控件定位到指定的位置:

方法參數(shù)說明move()x, y設定 QPushButton 在擺放的父控件中的 xy 座標,x 往右為正,y 往下為正,尺寸根據(jù)內(nèi)容自動延伸。setGeometry()x, y, w, h設定 QPushButton 在擺放的父控件中的 xy 座標和長寬尺寸,x 往右為正,y 往下為正,如果超過長寬尺寸,預設會被裁切無法顯示。

下方的程式碼執(zhí)行后會放入兩個 QPushButton,一個使用 move() 定位在 (50,30) 位置,另外一個使用 setGeometry() 方法定位在 (50,60) 的位置并設定大小為 100x50。

?from PyQt6 import QtWidgets
?import sys
?
?app = QtWidgets.QApplication(sys.argv)
?
?Form = QtWidgets.QWidget()
?Form.setWindowTitle('千牛編程思維')
?Form.resize(320, 240)
?
?btn1 = QtWidgets.QPushButton(Form)
?btn1.setText('按鈕 1')
?btn1.move(50,30) ? ? ? ? ? ? ? ? # 移動到 (50,30)
?
?btn2 = QtWidgets.QPushButton(Form)
?btn2.setText('按鈕 2')
?btn2.setGeometry(50,60,100,50) ? # 移動到 (50,60),大小 100x50
?
?Form.show()
?sys.exit(app.exec())

class 寫法

?from PyQt6 import QtWidgets
?import sys
?
?class MyWidget(QtWidgets.QWidget):
? ? ?def __init__(self):
? ? ? ? ?super().__init__()
? ? ? ? ?self.setWindowTitle('千牛編程思維')
? ? ? ? ?self.resize(320, 240)
? ? ? ? ?self.ui()
?
? ? ?def ui(self):
? ? ? ? ?self.btn1 = QtWidgets.QPushButton(self)
? ? ? ? ?self.btn1.setText('按鈕 1')
? ? ? ? ?self.btn1.move(50,30) ? ? ? ? ? ? ? ? # 移動到 (50,30)
?
? ? ? ? ?self.btn2 = QtWidgets.QPushButton(self)
? ? ? ? ?self.btn2.setText('按鈕 2')
? ? ? ? ?self.btn2.setGeometry(50,60,100,50) ? # 移動到 (50,60),大小 100x50
?
?if __name__ == '__main__':
? ? ?app = QtWidgets.QApplication(sys.argv)
? ? ?Form = MyWidget()
? ? ?Form.show()
? ? ?sys.exit(app.exec())

image-20230321100809931

QPushButton 樣式設定

如果會使用網(wǎng)頁 CSS 語法,就能透過 setStyleSheet() 設定 QPushButton 樣式,在設計樣式上也較為彈性好用,下方的程式碼執(zhí)行后,會套用 CSS 樣式語法,將 QPushButton 變成黃底紅字黑色外框的樣式 ( 不支援 CSS3 相關語法 )。

?from PyQt6 import QtWidgets
?import sys
?
?app = QtWidgets.QApplication(sys.argv)
?
?Form = QtWidgets.QWidget()
?Form.setWindowTitle('千牛編程思維')
?Form.resize(320, 240)
?
?btn = QtWidgets.QPushButton(Form)
?btn.setText('按鈕')
?btn.setGeometry(50,50,100,50)
?btn.setStyleSheet('''
? ? ?background:#ff0;
? ? ?color:#f00;
? ? ?font-size:20px;
? ? ?border:2px solid #000;
?''')
?
?Form.show()
?sys.exit(app.exec())

class 寫法:

?from PyQt6 import QtWidgets
?import sys
?
?class MyWidget(QtWidgets.QWidget):
? ? ?def __init__(self):
? ? ? ? ?super().__init__()
? ? ? ? ?self.setWindowTitle('千牛編程思維')
? ? ? ? ?self.resize(320, 240)
? ? ? ? ?self.ui()
?
? ? ?def ui(self):
? ? ? ? ?self.btn = QtWidgets.QPushButton(self)
? ? ? ? ?self.btn.setText('按鈕')
? ? ? ? ?self.btn.setGeometry(50,50,100,50)
? ? ? ? ?self.btn.setStyleSheet('''
? ? ? ? ? ? ?background:#ff0;
? ? ? ? ? ? ?color:#f00;
? ? ? ? ? ? ?font-size:20px;
? ? ? ? ? ? ?border:2px solid #000;
? ? ? ? ?''')
?
?if __name__ == '__main__':
? ? ?app = QtWidgets.QApplication(sys.argv)
? ? ?Form = MyWidget()
? ? ?Form.show()
? ? ?sys.exit(app.exec())

image-20230321100901686

調(diào)整 setStyleSheet() 內(nèi)容,也能做出類似網(wǎng)頁按鈕 hover 的樣式效果,下方的程式碼執(zhí)行后,當滑鼠移動到按鈕上方,按鈕就會變色。

?from PyQt6 import QtWidgets
?import sys
?
?app = QtWidgets.QApplication(sys.argv)
?
?Form = QtWidgets.QWidget()
?Form.setWindowTitle('千牛編程思維')
?Form.resize(320, 240)
?
?btn = QtWidgets.QPushButton(Form)
?btn.setText('按鈕')
?btn.setGeometry(50,50,100,50)
?btn.setStyleSheet('''
? ? ?QPushButton {
? ? ? ? ?font-size:20px;
? ? ? ? ?color: #f00;
? ? ? ? ?background: #ff0;
? ? ? ? ?border: 2px solid #000;
? ? ?}
? ? ?QPushButton:hover {
? ? ? ? ?color: #ff0;
? ? ? ? ?background: #f00;
? ? ?}
?''')
?
?Form.show()
?sys.exit(app.exec())

class 寫法:

?from PyQt6 import QtWidgets
?import sys
?
?class MyWidget(QtWidgets.QWidget):
? ? ?def __init__(self):
? ? ? ? ?super().__init__()
? ? ? ? ?self.setWindowTitle('千牛編程思維')
? ? ? ? ?self.resize(320, 240)
? ? ? ? ?self.ui()
?
? ? ?def ui(self):
? ? ? ? ?self.btn = QtWidgets.QPushButton(self)
? ? ? ? ?self.btn.setText('按鈕')
? ? ? ? ?self.btn.setGeometry(50,50,100,50)
? ? ? ? ?self.btn.setStyleSheet('''
? ? ? ? ? ? ?QPushButton {
? ? ? ? ? ? ? ? ?font-size:20px;
? ? ? ? ? ? ? ? ?color: #f00;
? ? ? ? ? ? ? ? ?background: #ff0;
? ? ? ? ? ? ? ? ?border: 2px solid #000;
? ? ? ? ? ? ?}
? ? ? ? ? ? ?QPushButton:hover {
? ? ? ? ? ? ? ? ?color: #ff0;
? ? ? ? ? ? ? ? ?background: #f00;
? ? ? ? ? ? ?}
? ? ? ? ?''')
?
?if __name__ == '__main__':
? ? ?app = QtWidgets.QApplication(sys.argv)
? ? ?Form = MyWidget()
? ? ?Form.show()
? ? ?sys.exit(app.exec())

動畫

停用 QPushButton

使用 方法可以「停用」或「啟用」QPushButton,停用的 QPushButton 會以「半透明」的方式呈現(xiàn)。setDisabled()

from PyQt6 import QtWidgets
import sys

app = QtWidgets.QApplication(sys.argv)

Form = QtWidgets.QWidget()
Form.setWindowTitle('千牛編程思維')
Form.resize(320, 240)

btn = QtWidgets.QPushButton(Form)
btn.setText('按鈕')
btn.setGeometry(50,50,100,50)
btn.setDisabled(True) ? ? # 停用設為 True

Form.show()
sys.exit(app.exec())

class 寫法:

from PyQt6 import QtWidgets
import sys

class MyWidget(QtWidgets.QWidget):
? ?def __init__(self):
? ? ? ?super().__init__()
? ? ? ?self.setWindowTitle('千牛編程思維')
? ? ? ?self.resize(320, 240)
? ? ? ?self.ui()

? ?def ui(self):
? ? ? ?self.btn = QtWidgets.QPushButton(self)
? ? ? ?self.btn.setText('按鈕')
? ? ? ?self.btn.setGeometry(50,50,100,50)
? ? ? ?self.btn.setDisabled(True)

if __name__ == '__main__':
? ?app = QtWidgets.QApplication(sys.argv)
? ?Form = MyWidget()
? ?Form.show()
? ?sys.exit(app.exec())

image-20230321102237330

如果是使用 setStyleSheet() 方法設定樣式,可以從 QPushButton:disabled 的屬性設定停用按鈕樣式。

from PyQt6 import QtWidgets
import sys

app = QtWidgets.QApplication(sys.argv)

Form = QtWidgets.QWidget()
Form.setWindowTitle('千牛編程思維')
Form.resize(320, 240)

btn = QtWidgets.QPushButton(Form)
btn.setText('按鈕')
btn.setGeometry(50,50,100,50)
btn.setStyleSheet('''
? ?QPushButton {
? ? ? ?font-size:20px;
? ? ? ?color: #f00;
? ? ? ?background: #ff0;
? ? ? ?border: 2px solid #000;
? ?}
? ?QPushButton:disabled {
? ? ? ?color:#fff;
? ? ? ?background:#ccc;
? ? ? ?border: 2px solid #aaa;
? ?}
''')
btn.setDisabled(True)

Form.show()
sys.exit(app.exec())

class 寫法:

from PyQt6 import QtWidgets
import sys

class MyWidget(QtWidgets.QWidget):
? ?def __init__(self):
? ? ? ?super().__init__()
? ? ? ?self.setWindowTitle('千牛編程思維')
? ? ? ?self.resize(320, 240)
? ? ? ?self.ui()

? ?def ui(self):
? ? ? ?self.btn = QtWidgets.QPushButton(self)
? ? ? ?self.btn.setText('按鈕')
? ? ? ?self.btn.setGeometry(50,50,100,50)
? ? ? ?self.btn.setStyleSheet('''
? ? ? ? ? ?QPushButton {
? ? ? ? ? ? ? ?font-size:20px;
? ? ? ? ? ? ? ?color: #f00;
? ? ? ? ? ? ? ?background: #ff0;
? ? ? ? ? ? ? ?border: 2px solid #000;
? ? ? ? ? ?}
? ? ? ? ? ?QPushButton:disabled {
? ? ? ? ? ? ? ?color:#fff;
? ? ? ? ? ? ? ?background:#ccc;
? ? ? ? ? ? ? ?border: 2px solid #aaa;
? ? ? ? ? ?}
? ? ? ?''')
? ? ? ?self.btn.setDisabled(True)

if __name__ == '__main__':
? ?app = QtWidgets.QApplication(sys.argv)
? ?Form = MyWidget()
? ?Form.show()
? ?sys.exit(app.exec())

image-20230321102320845

QPushButton 點擊事件

使用 clicked.connect(fn) 方法可以設定 QPushButton 的點擊事件,該方法表示「點擊按鈕時,會執(zhí)行 fn 函式」,下方的程式碼執(zhí)行后,點擊按鈕會執(zhí)行 show 函式,show 函式會不斷地將變數(shù) a 增加 1,再透過 QLabel 顯示數(shù)字。

from PyQt6 import QtWidgets
import sys

app = QtWidgets.QApplication(sys.argv)

Form = QtWidgets.QWidget()
Form.setWindowTitle('千牛編程思維')
Form.resize(320, 240)

a = 0
def show():
? ?global a
? ?a = a + 1
? ?label.setText(str(a)) ? ? ? # 更新 QLabel 內(nèi)容

label = QtWidgets.QLabel(Form)
label.setText('0')
label.setStyleSheet('font-size:20px;')
label.setGeometry(50,30,100,30)

btn = QtWidgets.QPushButton(Form)
btn.setText('增加數(shù)字')
btn.setGeometry(50,60,100,30)
btn.clicked.connect(show) ? ? ? # 點擊時執(zhí)行 show 函式

Form.show()
sys.exit(app.exec())

class 寫法 ( 注意不能使用 show 作為方法名稱,會覆寫基類的 show 方法造成無法顯示 ):

from PyQt6 import QtWidgets
import sys

class MyWidget(QtWidgets.QWidget):
? ?def __init__(self):
? ? ? ?super().__init__()
? ? ? ?self.setWindowTitle('千牛編程思維')
? ? ? ?self.resize(320, 240)
? ? ? ?self.a = 0 ? ?# 設定 a 屬性為 0
? ? ? ?self.ui()

? ?def ui(self):
? ? ? ?self.label = QtWidgets.QLabel(self)
? ? ? ?self.label.setText('0')
? ? ? ?self.label.setStyleSheet('font-size:20px;')
? ? ? ?self.label.setGeometry(50,30,100,30)

? ? ? ?self.btn = QtWidgets.QPushButton(self)
? ? ? ?self.btn.setText('增加數(shù)字')
? ? ? ?self.btn.setGeometry(50,60,100,30)
? ? ? ?self.btn.clicked.connect(self.showNum) ?# 點擊時執(zhí)行 showNum 方法

? ?# 注意不能使用 show 作為 class 內(nèi)部方法的名稱
? ?def showNum(self):
? ? ? ?self.a = self.a + 1
? ? ? ?self.label.setText(str(self.a)) ? # 更新 QLabel 內(nèi)容

if __name__ == '__main__':
? ?app = QtWidgets.QApplication(sys.argv)
? ?Form = MyWidget()
? ?Form.show()
? ?sys.exit(app.exec())

動畫1

如果要執(zhí)行的函式帶有「參數(shù)」,則可以使用 lambda 匿名函式處理,下方的程式碼執(zhí)行后,點擊 A 按鈕就會出現(xiàn) A 文字,點擊 B 按鈕就會出現(xiàn) B 文字。

from PyQt6 import QtWidgets
import sys

app = QtWidgets.QApplication(sys.argv)

Form = QtWidgets.QWidget()
Form.setWindowTitle('千牛編程思維')
Form.resize(320, 240)

def show(e):
? ?label.setText(e) ? # 顯示參數(shù)內(nèi)容

label = QtWidgets.QLabel(Form)
label.setText('A')
label.setStyleSheet('font-size:20px;')
label.setGeometry(50,30,100,30)

btn1 = QtWidgets.QPushButton(Form)
btn1.setText('A')
btn1.setGeometry(50,60,50,30)
btn1.clicked.connect(lambda:show('A')) ?# 使用 lambda 函式

btn2 = QtWidgets.QPushButton(Form)
btn2.setText('B')
btn2.setGeometry(110,60,50,30)
btn2.clicked.connect(lambda:show('B')) ?# 使用 lambda 函式

Form.show()
sys.exit(app.exec())

class 寫法 ( 注意不能使用 show 作為方法名稱,會覆寫基類的 show 方法造成無法顯示 ):

from PyQt6 import QtWidgets
import sys

class MyWidget(QtWidgets.QWidget):
? ?def __init__(self):
? ? ? ?super().__init__()
? ? ? ?self.setWindowTitle('千牛編程思維')
? ? ? ?self.resize(320, 240)
? ? ? ?self.ui()

? ?def ui(self):
? ? ? ?self.label = QtWidgets.QLabel(self)
? ? ? ?self.label.setText('A')
? ? ? ?self.label.setStyleSheet('font-size:20px;')
? ? ? ?self.label.setGeometry(50,30,100,30)

? ? ? ?self.btn1 = QtWidgets.QPushButton(self)
? ? ? ?self.btn1.setText('A')
? ? ? ?self.btn1.setGeometry(50,60,50,30)
? ? ? ?self.btn1.clicked.connect(lambda:self.showText('A')) ?# 使用 lambda 函式

? ? ? ?self.btn2 = QtWidgets.QPushButton(self)
? ? ? ?self.btn2.setText('B')
? ? ? ?self.btn2.setGeometry(110,60,50,30)
? ? ? ?self.btn2.clicked.connect(lambda:self.showText('B')) ?# 使用 lambda 函式

? ?# 注意不能使用 show 作為 class 內(nèi)部方法的名稱
? ?def showText(self, text):
? ? ? ?self.label.setText(text)

if __name__ == '__main__':
? ?app = QtWidgets.QApplication(sys.argv)
? ?Form = MyWidget()
? ?Form.show()
? ?sys.exit(app.exec())



QPushButton按鈕的評論 (共 條)

分享到微博請遵守國家法律
昌都县| 江口县| 灵山县| 横峰县| 保靖县| 建德市| 拜泉县| 溆浦县| 黑山县| 陇南市| 布拖县| 桃江县| 万州区| 蕲春县| 夹江县| 高邑县| 上林县| 临泽县| 云林县| 东阳市| 桂东县| 博白县| 会同县| 电白县| 广平县| 东台市| 惠水县| 金湖县| 化德县| 蒙山县| 布尔津县| 尼勒克县| 德江县| 吴江市| 玉林市| 甘肃省| 桃园市| 定远县| 英吉沙县| 南昌县| 鹰潭市|