PyQt5 – QPushButton小工具

PyQt5 – QPushButton小工具

在任何GUI设计中,命令按钮是最重要和最经常使用的控件。以 “保存”、”打开”、”确定”、”是”、”否 “和 “取消 “等为标题的按钮对任何计算机用户来说都是熟悉的。在PyQt API中, QPushButton 类对象呈现了一个按钮,当点击它时,可以被编程调用某个功能。

QPushButton类从 QAbstractButton 类继承其核心功能。它是长方形的,可以在其表面显示文字说明或图标。

以下是QPushButton类中一些最常用的方法

序号 方法和描述
1 setCheckable() 如果设置为 “true”,可以识别按钮的按下和释放状态。
2 toggle() 在可检查状态之间进行切换
3 setIcon() 显示一个由图像文件的像素图组成的图标。
4 setEnabled() 当设置为false时,该按钮将被禁用,因此点击它不会发出信号。
5 isChecked() 返回按钮的布尔值状态
6 setDefault() 将按钮设置为默认状态
7 setText() 以编程方式设置按钮的标题
8 text() 检索按钮的标题

例子

四个QPushButton对象被设置了上述的一些属性。这个例子是以面向对象的形式写的,因为事件的来源需要作为参数传递给槽函数。

四个QPushButton对象被定义为类中的实例变量。第一个按钮 b1 通过以下语句被转换为切换按钮

self.b1.setCheckable(True)
self.b1.toggle()

这个按钮的点击信号被连接到一个成员方法btnstate(),该方法通过检查isChecked()属性来识别按钮是否被按下或释放。

def btnstate(self):
   if self.b1.isChecked():
      print "button pressed"
   else:
      print "button released"

第二个按钮 b2 在脸上显示一个图标。setIcon()方法接受任何图像文件的像素图对象作为参数。

b2.setIcon(QIcon(QPixmap("python.gif")))

通过使用setEnabled()方法,按钮 b3 被设置为禁用。

b3.setEnabled(False)

PushButton b4 通过setDefault()方法被设置为默认按钮。它的标题的快捷方式是通过在标题(&Default)前面加上&来创建的。因此,通过使用键盘组合Alt+D,连接槽方法将被调用。

按钮b1和b4被连接到whichbtn()槽方法。由于该函数的目的是检索被点击的按钮的标题,所以按钮对象应该作为一个参数被传递。这可以通过使用lambda函数来实现。

比如说。

b4.clicked.connect(lambda:self.whichbtn(self.b4))

以下是完整的代码

import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

class Form(QDialog):
   def __init__(self, parent=None):
      super(Form, self).__init__(parent)

      layout = QVBoxLayout()
      self.b1 = QPushButton("Button1")
      self.b1.setCheckable(True)
      self.b1.toggle()
      self.b1.clicked.connect(lambda:self.whichbtn(self.b1))
      self.b1.clicked.connect(self.btnstate)
      layout.addWidget(self.b1)

      self.b2 = QPushButton()
      self.b2.setIcon(QIcon(QPixmap("python.gif")))
      self.b2.clicked.connect(lambda:self.whichbtn(self.b2))
      layout.addWidget(self.b2)
      self.setLayout(layout)
      self.b3 = QPushButton("Disabled")
      self.b3.setEnabled(False)
      layout.addWidget(self.b3)

      self.b4 = QPushButton("&Default")
      self.b4.setDefault(True)
      self.b4.clicked.connect(lambda:self.whichbtn(self.b4))
      layout.addWidget(self.b4)

      self.setWindowTitle("Button demo")

   def btnstate(self):
      if self.b1.isChecked():
         print "button pressed"
      else:
         print "button released"

   def whichbtn(self,b):
      print "clicked button is "+b.text()

def main():
   app = QApplication(sys.argv)
   ex = Form()
   ex.show()
   sys.exit(app.exec_())

if __name__ == '__main__':
   main()

输出

上述代码产生以下输出。

PyQt5 - QPushButton小工具

clicked button is Button1
button released
clicked button is Button1
button pressed
clicked button is &Default

pyqt_basic_widgets.htm

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程