📅  最后修改于: 2023-12-03 15:04:01.021000             🧑  作者: Mango
PyQt5是一款Python编程语言下的Qt5图形用户界面工具包。它同时支持GUI编程和非GUI编程,如控制台应用程序和CLI工具。
按钮是PyQt5中最基础的UI组件之一。它用于在GUI应用程序中触发操作或执行某些任务,并经常与其他UI组件一起使用。
要在PyQt5应用程序中创建按钮,需要使用QtWidgets库中的QPushButton类。
from PyQt5.QtWidgets import QApplication, QPushButton, QWidget
import sys
class App(QWidget):
def __init__(self):
super().__init__()
self.title = 'PyQt5 button'
self.left = 10
self.top = 10
self.width = 640
self.height = 480
self.initUI()
def initUI(self):
self.setWindowTitle(self.title)
self.setGeometry(self.left, self.top, self.width, self.height)
button = QPushButton('Click me!', self)
button.setToolTip('This is a QPushButton widget')
button.move(100,70)
button.clicked.connect(self.on_click)
self.show()
def on_click(self):
print('You clicked me!')
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = App()
sys.exit(app.exec_())
在上面的代码中,我们创建了一个按钮并将其添加到窗口中。我们使用move()方法来设置按钮的位置,并使用clicked信号连接到我们定义的on_click()方法。当点击按钮时,将打印消息“You clicked me!”到控制台上。
按钮有几种事件,包括单击事件、双击事件和右键单击事件。要为按钮设置这些事件,我们可以使用信号和槽(Slots)。
from PyQt5.QtWidgets import QApplication, QPushButton, QWidget
from PyQt5.QtCore import pyqtSlot
import sys
class App(QWidget):
def __init__(self):
super().__init__()
self.title = 'PyQt5 button events'
self.left = 10
self.top = 10
self.width = 640
self.height = 480
self.initUI()
def initUI(self):
self.setWindowTitle(self.title)
self.setGeometry(self.left, self.top, self.width, self.height)
button = QPushButton('Click me!', self)
button.setToolTip('This is a QPushButton widget')
button.move(100,70)
button.clicked.connect(self.on_click)
button.doubleClicked.connect(self.on_double_click)
button.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)
button.addAction(QtGui.QAction('Right click menu item 1',self))
button.addAction(QtGui.QAction('Right click menu item 2',self))
button.customContextMenuRequested.connect(self.on_context_menu)
self.show()
@pyqtSlot()
def on_click(self):
print('You clicked me!')
@pyqtSlot()
def on_double_click(self):
print('You double clicked me!')
@pyqtSlot()
def on_context_menu(self):
print('You right clicked me!')
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = App()
sys.exit(app.exec_())
在这个例子中,我们定义了三个不同的槽方法,分别处理单击、双击和右键单击事件。我们还为按钮添加了右键单击上下文菜单,并为该菜单定义了两个菜单项。
按钮的状态可用、禁用或隐藏。要设置按钮的状态,可以使用setEnabled()、setDisabled()和setHidden()方法。
from PyQt5.QtWidgets import QApplication, QPushButton, QWidget
import sys
class App(QWidget):
def __init__(self):
super().__init__()
self.title = 'PyQt5 button status'
self.left = 10
self.top = 10
self.width = 640
self.height = 480
self.initUI()
def initUI(self):
self.setWindowTitle(self.title)
self.setGeometry(self.left, self.top, self.width, self.height)
button1 = QPushButton('Enable me!', self)
button1.setToolTip('This is a QPushButton widget')
button1.move(100,70)
button1.clicked.connect(self.enable_button2)
button2 = QPushButton('I am disabled', self)
button2.setToolTip('This is a disabled QPushButton widget')
button2.move(100,120)
button2.setDisabled(True)
button3 = QPushButton('I am hidden', self)
button3.setToolTip('This is a hidden QPushButton widget')
button3.move(100,170)
button3.setHidden(True)
self.show()
def enable_button2(self):
self.button2.setEnabled(True)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = App()
sys.exit(app.exec_())
在这个例子中,我们创建了三个按钮,分别位于不同位置,并设置了不同的状态。当单击第一个按钮时,我们会将第二个按钮的状态设置为“可用”。
可以通过使用样式表(Stylesheet)来自定义按钮的样式。样式表是一种定义UI元素显示方式的技术,它与HTML和CSS有些相似。可以使用setStyleSheet()方法来设置样式表。
from PyQt5.QtWidgets import QApplication, QPushButton, QWidget
import sys
class App(QWidget):
def __init__(self):
super().__init__()
self.title = 'PyQt5 button style'
self.left = 10
self.top = 10
self.width = 640
self.height = 480
self.initUI()
def initUI(self):
self.setWindowTitle(self.title)
self.setGeometry(self.left, self.top, self.width, self.height)
button1 = QPushButton('Default style', self)
button1.setToolTip('This is a QPushButton widget')
button1.move(100,70)
button2 = QPushButton('Flat style', self)
button2.setToolTip('This is a flat QPushButton widget')
button2.move(100,120)
button2.setStyleSheet('QPushButton {border-style: flat}')
button3 = QPushButton('Custom style', self)
button3.setToolTip('This is a custom QPushButton widget')
button3.move(100,170)
button3.setStyleSheet('QPushButton {background-color: red; color: white;}')
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = App()
sys.exit(app.exec_())
在这个例子中,我们创建了三个按钮,在其中两个按钮上应用了样式表。第二个按钮是一个扁平按钮,第三个则是自定义样式表,设置了背景颜色和文本颜色。