【pyqt5學習】——QAbstractButton學習(普通按鈕QPushButton、工具按鈕QToolButton、單選按鈕QRadioButton、復選框按鈕QCheckBox)

目錄

1、按鈕介紹

2、普通按鈕QPushButton學習

1)特殊模式——開關按鈕(toggle)

①將按鈕設置為可選擇的

②將按鈕按下

判斷按鈕是否被按下?isChecked()

2)給按鈕設置前置圖標setIcon()

??編輯

3)按鈕信號

4)完整代碼

3、單選按鈕QRadioButton學習

?1)將按鈕設置為選中狀態setChecked()

2)信號toggled和clicked

3)獲取發射信號的控件self.sender()

4)完整代碼

?4、復選框QCheckBox學習

1)三種狀態(未選中、半選中、選中)

2) 設置狀態

①方法一——setCheckState

②方法二—— setChecked()

3)開啟三種狀態 ——setTristate(True)

4)獲取復選框的狀態isChecked()、checkState()?

5)信號——clicked、stateChanged?

?6)完整代碼


1、按鈕介紹

共四種按鈕類型

QPushButton

QToolButton

QRadioButton

QCheckBox

有共同的父類:QAbstractButton

2、普通按鈕QPushButton學習

1)特殊模式——開關按鈕(toggle)

普通按鈕的特殊模式即為開關狀態,按鈕只有按下和未按下兩種狀態,具體設置為:

①將按鈕設置為可選擇的

self.button1.setCheckable(True) # 將按鈕設置為開關狀態的特殊模式

②將按鈕按下

self.button1.toggle() # 將按鈕按下,只有將button屬性設置為checkable該行才有用

注:上述一般是結合使用,若未將按鈕的Checkable屬性設置為TRUE,toggle是沒有效果的

按下狀態按鈕會呈現淺藍色:

?

未按下則顯示灰色:

?

判斷按鈕是否被按下?isChecked()

?通過按鈕名稱.isChecked()方法可以判斷按鈕是否被按下?

2)給按鈕設置前置圖標setIcon()

self.button2.setIcon(QIcon(QPixmap("icon.jpg")))

?

3)按鈕信號

clicked——常用的信號,就是“點擊按鈕”信號

toggled——這個信號只有開關模式的按鈕才有,“按鈕狀態發生改變”信號

注:上述兩個信號在普通按鈕中的效果是一樣的,因為要使得一個按鈕的狀態改變就必須點擊按鈕,因此效果一樣

4)完整代碼

from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
import sys# QPushButton——普通按鈕
class QPushbuttonDemo(QWidget):def __init__(self):super(QPushbuttonDemo, self).__init__()self.initUI()def initUI(self):self.resize(30,300)self.setWindowTitle("普通按鈕QPushButton學習")layout = QVBoxLayout()# 將普通按鈕設置為特殊模式——開關按鈕,有兩個狀態(按下和未按下)self.button1 = QPushButton("第一個按鈕")self.button1.setText("First Button")print(self.button1.isChecked()) # Falseself.button1.setCheckable(True) # 將按鈕設置為開關狀態的特殊模式self.button1.toggle() # 將按鈕按下,只有將button屬性設置為checkable該行才有用print(self.button1.isChecked()) # TRUEself.button1.clicked.connect(self.showState) # 將按鈕點擊信號綁定事件self.button1.toggled.connect(self.showState) # 將按鈕開關信號綁定事件,和上述一樣# 給普通按鈕添加圖標self.button2 = QPushButton("圖標按鈕")self.button2.setIcon(QIcon(QPixmap("icon.jpg")))layout.addWidget(self.button1)layout.addWidget(self.button2)self.setLayout(layout)def showState(self):if self.button1.isChecked():print(self.button1.text() + "已按下")else:print(self.button1.text() + "未按下")if __name__ == '__main__':app = QApplication(sys.argv)mainWin = QPushbuttonDemo()mainWin.show()sys.exit(app.exec_())

?運行結果:

?

3、單選按鈕QRadioButton學習

在同一個布局或者同一個容器里面的單選按鈕,只有一個單選按鈕可以被選中,即當選擇一個按鈕時,其它的按鈕就會被取消選擇。

兩種狀態——選中和不被選中

?1)將按鈕設置為選中狀態setChecked()

self.button1.setChecked(True)

2)信號toggled和clicked

clicked——常用的信號,就是“選擇按鈕”信號

toggled——“按鈕狀態發生改變”信號

注:上述兩個信號在普通按鈕中的效果是不一樣的,當選中一個按鈕時,之前被選擇的按鈕會取消按鈕,這時候“按鈕狀態改變”的按鈕有兩個,而被點擊(選擇)的按鈕只有一個

		self.button1.clicked.connect(self.showState) # 點擊的時候會觸發事件self.button2.toggled.connect(self.showState) # 狀態發生變化了就會觸發事件

3)獲取發射信號的控件self.sender()

radioButton = self.sender() # 獲得信號發射的控件

4)完整代碼

# QRadioButton——單選按鈕
class QRadioButtonDemo(QWidget):def __init__(self):super(QRadioButtonDemo, self).__init__()self.initUI()def initUI(self):self.resize(30,300)self.setWindowTitle("單選按鈕QRadioButton學習")layout = QVBoxLayout()self.button1 = QRadioButton("第一個按鈕")self.button1.setText("First Button")self.button1.setChecked(True)self.button2 = QRadioButton("第二個按鈕")self.button2.setText("Second Button")self.button1.clicked.connect(self.showState1) # 點擊的時候會觸發事件self.button2.toggled.connect(self.showState2) # 狀態發生變化了就會觸發事件layout.addWidget(self.button1)layout.addWidget(self.button2)self.setLayout(layout)def showState1(self):radioButton = self.sender() # 獲得信號發射的控件if radioButton.isChecked() == True:print(radioButton.text() + "被選中_-------------------")else:print(radioButton.text() + "未被選中_-------------------------")def showState2(self):radioButton = self.sender() # 獲得信號發射的控件if radioButton.isChecked() == True:print(radioButton.text() + "被選中")else:print(radioButton.text() + "未被選中")
if __name__ == '__main__':app = QApplication(sys.argv)mainWin = QRadioButtonDemo()mainWin.show()sys.exit(app.exec_())

?

?可以看到:

1)當在按鈕2被選中的情況下,選擇按鈕1,這時候由于按鈕1被點擊因此會調用槽函數showState1,且因為按鈕2由選中的狀態切換為取消選擇狀態,因此showState2槽函數也會被調用;

2)當在按鈕1被選擇的情況下,選擇按鈕2時,因為按鈕2狀態發生改變,因此會調用showState2槽函數,而由于按鈕1未被點擊,因此showState1槽函數不會被調用

?4、復選框QCheckBox學習

1)三種狀態(未選中、半選中、選中)

復選框QCheckBox區別于單選按鈕,復選框可以同時選中多個,有三種狀態(未選中、半選中、選中)

未選中——0

半選中——1

選中——2

?

2) 設置狀態

①方法一——setCheckState

self.checkbox3.setCheckState(num) # 其中num=1,2,3

其中0表示未選中、1表示半選擇,2表示選中

self.checkbox3.setCheckState(0) # 未選中self.checkbox3.setCheckState(1) # 半選中self.checkbox3.setCheckState(2) # 選中

或者:

self.checkbox1.setCheckState(Qt.PartiallyChecked) # 半選中
self.checkbox1.setCheckState(Qt.Checked) # 選中

默認為不選中

②方法二—— setChecked()

self.checkbox1.setChecked(True) # 選中
self.checkbox1.setChecked(False) # 未選中

3)開啟三種狀態 ——setTristate(True)

默認是兩種狀態——選中和未選中

如果需要三種狀態則需要開啟

self.checkbox3.setTristate(True) ## 將三種狀態同時存在的開關打開

4)獲取復選框的狀態isChecked()、checkState()?

?self.checkbox3.isChecked()

這里只能獲得TRUE或者False,其中半選中和選中都為true

self.checkbox1.checkState()?

這里獲得狀態碼,數字的形式

未選中——0

半選中——1

選中——2

5)信號——clicked、stateChanged?

?clicked——點擊信號

stateChanged ——狀態發生改變的信號

兩者是一樣的效果,原因和普通按鈕一樣

		self.checkbox1.clicked.connect(self.clickedSlot)self.checkbox3.stateChanged.connect(self.stateChangedSlot)

?6)完整代碼

# 復選框控件QCheckBox控件
'''
三種狀態:
選中:0
半選中:1
未選中:2
'''
from PyQt5.Qt import *class QCheckBoxDemo(QWidget):def __init__(self):super(QCheckBoxDemo, self).__init__()self.InitUI()def InitUI(self):self.resize(500,30)self.setWindowTitle("復選框控件學習")layout = QHBoxLayout()self.checkbox1 = QCheckBox("復選框1")self.checkbox2 = QCheckBox("復選框2")self.checkbox3 = QCheckBox("復選框3")# 設置為選中,默認不選中self.checkbox1.setChecked(True)# 設置為半選中self.checkbox3.setTristate(True) ## 將三種狀態同時存在的開關打開self.checkbox3.setCheckState(1) ## 設置為半選中layout.addWidget(self.checkbox1)layout.addWidget(self.checkbox2)layout.addWidget(self.checkbox3)self.checkbox1.clicked.connect(self.clickedSlot)self.checkbox3.stateChanged.connect(self.stateChangedSlot)self.setLayout(layout)# clickeddef clickedSlot(self):print(self.checkbox1.text() + ",isChecked=" +str(self.checkbox1.isChecked()) + ",checkedState=",str(self.checkbox1.checkState()))# stateChangeddef stateChangedSlot(self):print(self.checkbox3.text() + ",isChecked=" +str(self.checkbox3.isChecked()) + ",checkedState=",str(self.checkbox3.checkState()))if __name__ == '__main__':app = QApplication(sys.argv)mainWin = QCheckBoxDemo()mainWin.show()sys.exit(app.exec_())

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/255383.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/255383.shtml
英文地址,請注明出處:http://en.pswp.cn/news/255383.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java 企業 網站源碼 模版 屏幕自適應 有前后臺 springmvc SSM 生成靜態化

前臺: 支持四套模版, 可以在后臺切換點擊:獲取地址QQ 313596790官網 http://www.fhadmin.org/系統介紹:1.網站后臺采用主流的 SSM 框架 jsp JSTL,網站后臺采用freemaker靜態化模版引擎生成html2.因為是生成的html&…

挖財后端架構簡介

挖財后端技術用的主要是比較大眾的東西,Web容器用Tomcat,框架主要是Spring MVC,也有少量的Play,中間服務層是Dubbo,微容器用Spring Boot,服務注冊這一塊是用ZooKeeper,核心業務開發方式還是圍繞…

【pyqt5學習】——QcomboBox學習

目錄 1、添加條目: 1)逐一添加 2)批量添加 3)獲取當前選中的索引 4)獲取當前選中文本 5)根據索引獲取文本 6)統計條目總數 7)信號——當前選中的索引發生改變currentIndexChanged() 2、…

vSphere Client 編輯虛擬機屬性的問題

vSphere Client 編輯虛擬機屬性的問題 編輯虛擬機屬性的時候, 出現: vpxclient.vmconfig.cpuid 初始值設置異常之類的,重置了, 并將注冊表中的所有vmvare 相關鍵值刪除了, 還是一樣的。。 后面參照https://kb.vmware.c…

Val編程-系統架構

利用Val可以編寫相對大型軟件。 界面書寫,運動軌跡規劃,外部通訊,進程交互,文本讀寫.... GlobalData可以利用一個庫來作為一個公用庫,實現各個庫的數據交互。 PublicFunc書寫基本的通用函數來作為基本函數,…

poj 1256 Anagram—next_permutation的神奇應用

題意:給你一條字符串,讓你輸出字符串中字符的全排列,輸出的順序要按它給的奇葩的字典序。 題解:要輸出全排列,暴力dfs可以過,但要注意題目的字典序以及相同字符的情況。如果用next_permutation()處理可以簡…

【pyqt5學習】—— 滑動條Qslider、計數器QSpinBox學習

目錄 1、滑動條QSlider 1)常用屬性 2)實例——利用滑動條來實現字體大小的修改 ?編輯 2、計數器QSpinBox 1)屬性方法 2)實例 1、滑動條QSlider 1)常用屬性 self.slider QSlider(Qt.Horizontal)# 設置最小值self.slider.setMinimum(2)…

shell常用命令之curl: -w,–write-out參數詳解

顧名思義,write-out的作用就是輸出點什么。curl的-w參數用于在一次完整且成功的操作后輸出指定格式的內容到標準輸出。 輸出格式由普通字符串和任意數量的變量組成,輸出變量需要按照%{variable_name}的格式,如果需要輸出%,double一…

Val編程-速度因子

機械手臂在一個三個基本指令(movel,movej,movec)指令中有下面基本參數進行配置。 1. Frame toolField; Tcp的值2. Frame frameField;用戶坐標系的值3. MoveType absRelField;絕對運動與相對運動4. Config configField;姿態5. BlendType blendTypeField;倒…

Node.js學習之路24——Express框架的app對象

1.express() 基于Node.js平臺,快速、開放、極簡的web開發框架。創建一個Express應用.express()是一個由express模塊導出的入口top-level函數.const express require(express); let app express(); 1.1 靜態資源管理 express.static(root, [options]) express.stat…

【pyqt5學習】——對話框QDialog學習(QMessageBox、QColorDialog、QFIleDialog、QFontDialog、QInputDialog)

目錄 1、對話框QDialog類別 2、通用對話框 ?編輯 3、消息對話框QMessageBox() 1)消息對話框QMessageBox類型 2)案例 ?編輯 4、輸入對話框QInputDialog 1) 類型 2)案例 5、字體格式對話框QFontDialog 6、顏色對話框QColorDialog 1&…

使用 Mesos 管理虛擬機

摘要 為了滿足渲染、基因測序等計算密集型服務的需求,UCloud 推出了“計算工廠”產品,讓用戶可以快速創建大量的計算資源(虛擬機)。該產品的背后,是一套基于 Mesos 的計算資源管理系統。本文簡要介紹該系統的結構、Mes…

Swift數據類型_整型和浮點型

//swift中的整型和浮點型/***//類型推斷整數是Int 浮點數是Double ,日常使用需要注意不能越界,存儲時間毫秒數 英雄經驗數等等之類內容容易越界整型大多數情況下,你不需要在代碼中指定哪種整型。Swift提供了一種額外的整型,Int類型Java中的long型&#x…

Val編程-套接字

套接字的介紹:http://zh.wikipedia.org/wiki/Berkeley%E5%A5%97%E6%8E%A5%E5%AD%97 主要分為客戶端和服務器。客戶端一般是需要主動去鏈接,需要配置服務器的IP和端口。服務器是被動響應,需要打開相應的端口。端口一般不推薦使用系統端口和常用…

【pyqt5學習】——Qpainter控件學習(文本、圖像、各種圖形)

目錄 1、作用及應用步驟 2、繪制文本drawText() 3、像素級別繪制點(正弦曲線為例) 4、繪制不同樣式的直線 5、繪制弧形、圓形、扇形、圖像等 6、畫刷填充區域QBrush 1、作用及應用步驟 QPainter是一個用于繪制的類,該類可以用于繪制&…

反向代理與Real-IP和X-Forwarded-For(轉)

如下圖所示,客戶端通過Nginx Proxy1 和 Nginx Proxy2 兩層反向代理才訪問到具體服務Nginx Backend(或如Tomcat服務)。那Nginx Backend如何才能拿到真實客戶端IP呢? 接下來我們來看看如何才能獲取到客戶端真實IP。 場景1  場景1是…

Android studio打開之后 cannot load project: java.lang.NUllpointerException

參考來源:http://bbs.csdn.net/topics/391014393 關閉網絡,重新打開Android studio就好了。(但是原因不清楚是為什么?) Internal error. Please report to http://code.google.com/p/android/issuescom.intellij.ide.p…

Val編程-任務編程

不同任務之間可以通過一個標志符來實現互斥事件。 程序代碼&#xff1a; Task2 <span style"font-size:12px;">beginwhile truewait(bTaskFlag)cls()gotoxy(1,1)put("這是Task2")gotoxy(1,2)if bTaskFlagput("BFlag:true ")elseput(&…

【pyqt5學習】——拖拽功能(DragDrop)、剪切板(QApplication.clipboard)

目錄 1、拖拽功能&#xff08;Drag&Drop&#xff09; 2、剪切板&#xff08;QApplication.clipboard&#xff09; 1、拖拽功能&#xff08;Drag&Drop&#xff09; 選擇文本輸入框中的文本&#xff0c;移動到下拉框中自動添加步驟&#xff1a; 1、將文本輸入框設置為可…

oracle12c之 控制pdb中sga 與 pga 內存使用

Memory Management using Resource Manager Oracle數據庫資源管理器(資源管理器)現在可以在多租戶容器數據庫(CDB)中管理可插入數據庫(PDBs)之間的內存使用。這一特性有助于在CDB中維護所有PDBs的性能&#xff0c;確保所有的PDBs都不會占用更多資源&#xff0c;從而導致其他PDB…