📌  相关文章
📜  PyQt5 – 将皮肤设置为按下的单选按钮(1)

📅  最后修改于: 2023-12-03 15:04:00.238000             🧑  作者: Mango

PyQt5 – 将皮肤设置为按下的单选按钮

在PyQt5中,单选按钮是一种用于选择一个选项的控件。当单选按钮被按下时,它会发出信号,表明某个选项已被选中。在本文中,我们将介绍如何使用PyQt5将皮肤设置为按下的单选按钮。

导入PyQt5

首先,我们需要导入PyQt5库,以便在我们的应用程序中使用它。我们将在代码的顶部导入PyQt5:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QRadioButton
from PyQt5.QtGui import QIcon

为了创建我们的GUI应用程序,我们将使用PyQt5.QtWidgets模块中的类。为了添加图标,我们还需要PyQt5.QtGui模块。

创建QWidget

接下来,我们将创建一个QWidget对象来容纳我们的单选按钮。QWidget是PyQt5中的一个基本部件,它可以在窗口中放置其他控件。

我们将创建一个名为SkinWidget的QWidget对象。我们还将调用QWidget的resize()方法将窗口大小设置为450x450像素,并使用setIcon()方法设置窗口图标:

class SkinWidget(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setGeometry(100, 100, 450, 450)
        self.setWindowTitle('Set Skin')
        self.setWindowIcon(QIcon('icon.png'))
添加单选按钮

接下来,我们将在SkinWidget中添加两个QRadioButton。我们将使用QRadioButton作为单选按钮控件。这些按钮将允许用户选择不同的皮肤。

我们将创建两个QRadioButton,一个用于选择亮色皮肤,另一个用于选择暗色皮肤。我们使用setFont()方法设置按钮的文本字体和大小。我们使用setGeometry()方法设置按钮位置和大小。

class SkinWidget(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setGeometry(100, 100, 450, 450)
        self.setWindowTitle('Set Skin')
        self.setWindowIcon(QIcon('icon.png'))

        self.radiobutton_light = QRadioButton('Light Skin', self)
        self.radiobutton_light.setGeometry(100, 100, 200, 40)
        self.radiobutton_light.setFont(QtGui.QFont("Arial", 12))
        
        self.radiobutton_dark = QRadioButton('Dark Skin', self)
        self.radiobutton_dark.setGeometry(100, 150, 200, 40)
        self.radiobutton_dark.setFont(QtGui.QFont("Arial", 12))
为单选按钮添加事件处理程序

我们将使用setStyleSheet()方法将按下的单选按钮标记为活动状态,并将另一个单选按钮标记为非活动状态。

我们将创建一个名为on_button_changed()的事件处理程序,该事件处理程序将在任何单选按钮按下时调用。

def on_button_changed(self):
    if self.radiobutton_light.isChecked():
        self.radiobutton_light.setStyleSheet("color: black")
        self.radiobutton_dark.setStyleSheet("color: gray")
    elif self.radiobutton_dark.isChecked():
        self.radiobutton_dark.setStyleSheet("color: black")
        self.radiobutton_light.setStyleSheet("color: gray")
将事件处理程序与单选按钮连接

我们需要将on_button_changed()事件处理程序与单选按钮的toggled事件连接。我们使用clicked信号来连接事件处理程序。

self.radiobutton_light.toggled.connect(self.on_button_changed)
self.radiobutton_dark.toggled.connect(self.on_button_changed)
运行应用程序

最后,我们需要将SkinWidget呈现到屏幕上,以便用户可以看到和使用它。

我们将创建一个名为main()的函数,在该函数中创建一个QApplication实例以运行应用程序。我们还将创建一个SkinWidget实例,并将其设置为应用程序的主窗口。

def main():
    app = QApplication(sys.argv)
    skinwidget = SkinWidget()
    skinwidget.show()
    sys.exit(app.exec_())

现在,我们可以运行我们的应用程序,看看我们的皮肤设置是否按预期工作。

完整代码示例:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QRadioButton
from PyQt5.QtGui import QIcon

class SkinWidget(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setGeometry(100, 100, 450, 450)
        self.setWindowTitle('Set Skin')
        self.setWindowIcon(QIcon('icon.png'))

        self.radiobutton_light = QRadioButton('Light Skin', self)
        self.radiobutton_light.setGeometry(100, 100, 200, 40)
        self.radiobutton_light.setFont(QtGui.QFont("Arial", 12))
        
        self.radiobutton_dark = QRadioButton('Dark Skin', self)
        self.radiobutton_dark.setGeometry(100, 150, 200, 40)
        self.radiobutton_dark.setFont(QtGui.QFont("Arial", 12))

        self.radiobutton_light.toggled.connect(self.on_button_changed)
        self.radiobutton_dark.toggled.connect(self.on_button_changed)

    def on_button_changed(self):
        if self.radiobutton_light.isChecked():
            self.radiobutton_light.setStyleSheet("color: black")
            self.radiobutton_dark.setStyleSheet("color: gray")
        elif self.radiobutton_dark.isChecked():
            self.radiobutton_dark.setStyleSheet("color: black")
            self.radiobutton_light.setStyleSheet("color: gray")


def main():
    app = QApplication(sys.argv)
    skinwidget = SkinWidget()
    skinwidget.show()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()

markdown格式:

PyQt5 – 将皮肤设置为按下的单选按钮

在PyQt5中,单选按钮是一种用于选择一个选项的控件。当单选按钮被按下时,它会发出信号,表明某个选项已被选中。在本文中,我们将介绍如何使用PyQt5将皮肤设置为按下的单选按钮。

导入PyQt5

首先,我们需要导入PyQt5库,以便在我们的应用程序中使用它。我们将在代码的顶部导入PyQt5:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QRadioButton
from PyQt5.QtGui import QIcon

为了创建我们的GUI应用程序,我们将使用PyQt5.QtWidgets模块中的类。为了添加图标,我们还需要PyQt5.QtGui模块。

创建QWidget

接下来,我们将创建一个QWidget对象来容纳我们的单选按钮。QWidget是PyQt5中的一个基本部件,它可以在窗口中放置其他控件。

我们将创建一个名为SkinWidget的QWidget对象。我们还将调用QWidget的resize()方法将窗口大小设置为450x450像素,并使用setIcon()方法设置窗口图标:

class SkinWidget(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setGeometry(100, 100, 450, 450)
        self.setWindowTitle('Set Skin')
        self.setWindowIcon(QIcon('icon.png'))
添加单选按钮

接下来,我们将在SkinWidget中添加两个QRadioButton。我们将使用QRadioButton作为单选按钮控件。这些按钮将允许用户选择不同的皮肤。

我们将创建两个QRadioButton,一个用于选择亮色皮肤,另一个用于选择暗色皮肤。我们使用setFont()方法设置按钮的文本字体和大小。我们使用setGeometry()方法设置按钮位置和大小。

class SkinWidget(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setGeometry(100, 100, 450, 450)
        self.setWindowTitle('Set Skin')
        self.setWindowIcon(QIcon('icon.png'))

        self.radiobutton_light = QRadioButton('Light Skin', self)
        self.radiobutton_light.setGeometry(100, 100, 200, 40)
        self.radiobutton_light.setFont(QtGui.QFont("Arial", 12))
        
        self.radiobutton_dark = QRadioButton('Dark Skin', self)
        self.radiobutton_dark.setGeometry(100, 150, 200, 40)
        self.radiobutton_dark.setFont(QtGui.QFont("Arial", 12))
为单选按钮添加事件处理程序

我们将使用setStyleSheet()方法将按下的单选按钮标记为活动状态,并将另一个单选按钮标记为非活动状态。

我们将创建一个名为on_button_changed()的事件处理程序,该事件处理程序将在任何单选按钮按下时调用。

def on_button_changed(self):
    if self.radiobutton_light.isChecked():
        self.radiobutton_light.setStyleSheet("color: black")
        self.radiobutton_dark.setStyleSheet("color: gray")
    elif self.radiobutton_dark.isChecked():
        self.radiobutton_dark.setStyleSheet("color: black")
        self.radiobutton_light.setStyleSheet("color: gray")
将事件处理程序与单选按钮连接

我们需要将on_button_changed()事件处理程序与单选按钮的toggled事件连接。我们使用clicked信号来连接事件处理程序。

self.radiobutton_light.toggled.connect(self.on_button_changed)
self.radiobutton_dark.toggled.connect(self.on_button_changed)
运行应用程序

最后,我们需要将SkinWidget呈现到屏幕上,以便用户可以看到和使用它。

我们将创建一个名为main()的函数,在该函数中创建一个QApplication实例以运行应用程序。我们还将创建一个SkinWidget实例,并将其设置为应用程序的主窗口。

def main():
    app = QApplication(sys.argv)
    skinwidget = SkinWidget()
    skinwidget.show()
    sys.exit(app.exec_())

现在,我们可以运行我们的应用程序,看看我们的皮肤设置是否按预期工作。

完整代码示例:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QRadioButton
from PyQt5.QtGui import QIcon

class SkinWidget(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setGeometry(100, 100, 450, 450)
        self.setWindowTitle('Set Skin')
        self.setWindowIcon(QIcon('icon.png'))

        self.radiobutton_light = QRadioButton('Light Skin', self)
        self.radiobutton_light.setGeometry(100, 100, 200, 40)
        self.radiobutton_light.setFont(QtGui.QFont("Arial", 12))
        
        self.radiobutton_dark = QRadioButton('Dark Skin', self)
        self.radiobutton_dark.setGeometry(100, 150, 200, 40)
        self.radiobutton_dark.setFont(QtGui.QFont("Arial", 12))

        self.radiobutton_light.toggled.connect(self.on_button_changed)
        self.radiobutton_dark.toggled.connect(self.on_button_changed)

    def on_button_changed(self):
        if self.radiobutton_light.isChecked():
            self.radiobutton_light.setStyleSheet("color: black")
            self.radiobutton_dark.setStyleSheet("color: gray")
        elif self.radiobutton_dark.isChecked():
            self.radiobutton_dark.setStyleSheet("color: black")
            self.radiobutton_light.setStyleSheet("color: gray")


def main():
    app = QApplication(sys.argv)
    skinwidget = SkinWidget()
    skinwidget.show()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()