# coding:utf-8 from PyQt6.QtCore import Qt, QSize from PyQt6.QtWidgets import QWidget, QVBoxLayout, QButtonGroup from PyQt6.QtGui import QAction from qfluentwidgets import (Action, DropDownPushButton, DropDownToolButton, PushButton, ToolButton, PrimaryPushButton, HyperlinkButton, ComboBox, RadioButton, CheckBox, Slider, SwitchButton, EditableComboBox, ToggleButton, RoundMenu, FluentIcon, SplitPushButton, SplitToolButton, PrimarySplitToolButton, PrimarySplitPushButton, PrimaryDropDownPushButton, PrimaryToolButton, PrimaryDropDownToolButton, ToggleToolButton, TransparentDropDownPushButton, TransparentPushButton, TransparentToggleToolButton, TransparentTogglePushButton, TransparentDropDownToolButton, TransparentToolButton, PillPushButton, PillToolButton) from .gallery_interface import GalleryInterface from ..common.translator import Translator class BasicInputInterface(GalleryInterface): """ Basic input interface """ def __init__(self, parent=None): translator = Translator() super().__init__( title=translator.basicInput, subtitle='qfluentwidgets.components.widgets', parent=parent ) self.setObjectName('basicInputInterface') # simple push button self.addExampleCard( self.tr('A simple button with text content'), PushButton(self.tr('Standard push button')), 'https://github.com/zhiyiYo/PyQt-Fluent-Widgets/blob/master/examples/basic_input/button/demo.py' ) # tool button button = ToolButton(':/gallery/images/kunkun.png') button.setIconSize(QSize(40, 40)) button.resize(70, 70) self.addExampleCard( self.tr('A button with graphical content'), button, 'https://github.com/zhiyiYo/PyQt-Fluent-Widgets/blob/master/examples/basic_input/button/demo.py' ) # primary color push button self.addExampleCard( self.tr('Accent style applied to push button'), PrimaryPushButton(self.tr('Accent style button')), 'https://github.com/zhiyiYo/PyQt-Fluent-Widgets/blob/master/examples/basic_input/button/demo.py' ) # primary color tool button self.addExampleCard( self.tr('Accent style applied to tool button'), PrimaryToolButton(FluentIcon.BASKETBALL), 'https://github.com/zhiyiYo/PyQt-Fluent-Widgets/blob/master/examples/basic_input/button/demo.py' ) # pill push button self.addExampleCard( self.tr('Pill push button'), PillPushButton(self.tr('Tag'), self, FluentIcon.TAG), 'https://github.com/zhiyiYo/PyQt-Fluent-Widgets/blob/master/examples/basic_input/button/demo.py' ) # pill tool button self.addExampleCard( self.tr('Pill tool button'), PillToolButton(FluentIcon.BASKETBALL), 'https://github.com/zhiyiYo/PyQt-Fluent-Widgets/blob/master/examples/basic_input/button/demo.py' ) # transparent push button self.addExampleCard( self.tr('A transparent push button'), TransparentPushButton(self.tr('Transparent push button'), self, FluentIcon.BOOK_SHELF), 'https://github.com/zhiyiYo/PyQt-Fluent-Widgets/blob/master/examples/basic_input/button/demo.py' ) # transparent tool button self.addExampleCard( self.tr('A transparent tool button'), TransparentToolButton(FluentIcon.BOOK_SHELF, self), 'https://github.com/zhiyiYo/PyQt-Fluent-Widgets/blob/master/examples/basic_input/button/demo.py' ) # 2-state check box self.addExampleCard( self.tr('A 2-state CheckBox'), CheckBox(self.tr('Two-state CheckBox')), 'https://github.com/zhiyiYo/PyQt-Fluent-Widgets/blob/master/examples/basic_input/check_box/demo.py' ) # 3-state check box checkBox = CheckBox(self.tr('Three-state CheckBox')) checkBox.setTristate(True) self.addExampleCard( self.tr('A 3-state CheckBox'), checkBox, 'https://github.com/zhiyiYo/PyQt-Fluent-Widgets/blob/master/examples/basic_input/check_box/demo.py' ) # combo box comboBox = ComboBox() comboBox.addItems(['shoko 🥰', '西宫硝子 😊', '一级棒卡哇伊的硝子酱 😘']) comboBox.setCurrentIndex(0) comboBox.setMinimumWidth(210) self.addExampleCard( self.tr('A ComboBox with items'), comboBox, 'https://github.com/zhiyiYo/PyQt-Fluent-Widgets/blob/master/examples/basic_input/combo_box/demo.py' ) # editable combo box comboBox = EditableComboBox() comboBox.addItems([ self.tr('Star Platinum'), self.tr('Crazy Diamond'), self.tr("Gold Experience"), self.tr('Sticky Fingers'), ]) comboBox.setPlaceholderText(self.tr('Choose your stand')) comboBox.setMinimumWidth(210) self.addExampleCard( self.tr('An editable ComboBox'), comboBox, 'https://github.com/zhiyiYo/PyQt-Fluent-Widgets/blob/master/examples/basic_input/combo_box/demo.py' ) # drop down button menu = RoundMenu(parent=self) menu.addAction(Action(FluentIcon.SEND, self.tr('Send'))) menu.addAction(Action(FluentIcon.SAVE, self.tr('Save'))) button = DropDownPushButton(self.tr('Email'), self, FluentIcon.MAIL) button.setMenu(menu) self.addExampleCard( self.tr('A push button with drop down menu'), button, 'https://github.com/zhiyiYo/PyQt-Fluent-Widgets/blob/master/examples/basic_input/button/demo.py' ) button = DropDownToolButton(FluentIcon.MAIL, self) button.setMenu(menu) self.addExampleCard( self.tr('A tool button with drop down menu'), button, 'https://github.com/zhiyiYo/PyQt-Fluent-Widgets/blob/master/examples/basic_input/button/demo.py' ) # primary color drop down button button = PrimaryDropDownPushButton(self.tr('Email'), self, FluentIcon.MAIL) button.setMenu(menu) self.addExampleCard( self.tr('A primary color push button with drop down menu'), button, 'https://github.com/zhiyiYo/PyQt-Fluent-Widgets/blob/master/examples/basic_input/button/demo.py' ) button = PrimaryDropDownToolButton(FluentIcon.MAIL, self) button.setMenu(menu) self.addExampleCard( self.tr('A primary color tool button with drop down menu'), button, 'https://github.com/zhiyiYo/PyQt-Fluent-Widgets/blob/master/examples/basic_input/button/demo.py' ) # transparent drop down button button = TransparentDropDownPushButton(self.tr('Email'), self, FluentIcon.MAIL) button.setMenu(menu) self.addExampleCard( self.tr('A transparent push button with drop down menu'), button, 'https://github.com/zhiyiYo/PyQt-Fluent-Widgets/blob/master/examples/basic_input/button/demo.py' ) # transparent drop down tool button button = TransparentDropDownToolButton(FluentIcon.MAIL, self) button.setMenu(menu) self.addExampleCard( self.tr('A transparent tool button with drop down menu'), button, 'https://github.com/zhiyiYo/PyQt-Fluent-Widgets/blob/master/examples/basic_input/button/demo.py' ) # hyperlink button self.addExampleCard( self.tr('A hyperlink button that navigates to a URI'), HyperlinkButton( 'https://qfluentwidgets.com', self.tr('QFluentWidgets official website'), self, FluentIcon.LINK), 'https://github.com/zhiyiYo/PyQt-Fluent-Widgets/blob/master/examples/basic_input/button/demo.py' ) # radio button radioWidget = QWidget() radioLayout = QVBoxLayout(radioWidget) radioLayout.setContentsMargins(2, 0, 0, 0) radioLayout.setSpacing(15) radioButton1 = RadioButton(self.tr('Star Platinum'), radioWidget) radioButton2 = RadioButton(self.tr('Crazy Diamond'), radioWidget) radioButton3 = RadioButton(self.tr('Soft and Wet'), radioWidget) buttonGroup = QButtonGroup(radioWidget) buttonGroup.addButton(radioButton1) buttonGroup.addButton(radioButton2) buttonGroup.addButton(radioButton3) radioLayout.addWidget(radioButton1) radioLayout.addWidget(radioButton2) radioLayout.addWidget(radioButton3) radioButton1.click() self.addExampleCard( self.tr('A group of RadioButton controls in a button group'), radioWidget, 'https://github.com/zhiyiYo/PyQt-Fluent-Widgets/blob/master/examples/basic_input/radio_button/demo.py' ) # horizontal slider slider = Slider(Qt.Horizontal) slider.setRange(0, 100) slider.setValue(30) slider.setMinimumWidth(200) self.addExampleCard( self.tr('A simple horizontal slider'), slider, 'https://github.com/zhiyiYo/PyQt-Fluent-Widgets/blob/master/examples/basic_input/slider/demo.py' ) # split button button = SplitPushButton(self.tr('Choose your stand'), self, FluentIcon.BASKETBALL) button.setFlyout(self.createStandMenu(button)) self.addExampleCard( self.tr('A split push button with drop down menu'), button, 'https://github.com/zhiyiYo/PyQt-Fluent-Widgets/blob/master/examples/basic_input/button/demo.py' ) ikunMenu = RoundMenu(parent=self) ikunMenu.addActions([ Action(self.tr('Sing')), Action(self.tr('Jump')), Action(self.tr("Rap")), Action(self.tr('Music')), ]) button = SplitToolButton(":/gallery/images/kunkun.png", self) button.setIconSize(QSize(30, 30)) button.setFlyout(ikunMenu) self.addExampleCard( self.tr('A split tool button with drop down menu'), button, 'https://github.com/zhiyiYo/PyQt-Fluent-Widgets/blob/master/examples/basic_input/button/demo.py' ) # primary color split button button = PrimarySplitPushButton(self.tr('Choose your stand'), self, FluentIcon.BASKETBALL) button.setFlyout(self.createStandMenu(button)) self.addExampleCard( self.tr('A primary color split push button with drop down menu'), button, 'https://github.com/zhiyiYo/PyQt-Fluent-Widgets/blob/master/examples/basic_input/button/demo.py' ) button = PrimarySplitToolButton(FluentIcon.BASKETBALL, self) button.setFlyout(ikunMenu) self.addExampleCard( self.tr('A primary color split tool button with drop down menu'), button, 'https://github.com/zhiyiYo/PyQt-Fluent-Widgets/blob/master/examples/basic_input/button/demo.py' ) # switch button self.switchButton = SwitchButton(self.tr('Off')) self.switchButton.checkedChanged.connect(self.onSwitchCheckedChanged) self.addExampleCard( self.tr('A simple switch button'), self.switchButton, 'https://github.com/zhiyiYo/PyQt-Fluent-Widgets/blob/master/examples/basic_input/switch_button/demo.py' ) # toggle button self.addExampleCard( self.tr('A simple toggle push button'), ToggleButton(self.tr('Start practicing'), self, FluentIcon.BASKETBALL), 'https://github.com/zhiyiYo/PyQt-Fluent-Widgets/blob/master/examples/basic_input/button/demo.py' ) # toggle tool button self.addExampleCard( self.tr('A simple toggle tool button'), ToggleToolButton(FluentIcon.BASKETBALL, self), 'https://github.com/zhiyiYo/PyQt-Fluent-Widgets/blob/master/examples/basic_input/button/demo.py' ) # transparent toggle button self.addExampleCard( self.tr('A transparent toggle push button'), TransparentTogglePushButton(self.tr('Start practicing'), self, FluentIcon.BASKETBALL), 'https://github.com/zhiyiYo/PyQt-Fluent-Widgets/blob/master/examples/basic_input/button/demo.py' ) # transparent toggle tool button self.addExampleCard( self.tr('A transparent toggle tool button'), TransparentToggleToolButton(FluentIcon.BASKETBALL, self), 'https://github.com/zhiyiYo/PyQt-Fluent-Widgets/blob/master/examples/basic_input/button/demo.py' ) def onSwitchCheckedChanged(self, isChecked): if isChecked: self.switchButton.setText(self.tr('On')) else: self.switchButton.setText(self.tr('Off')) def createStandMenu(self, button): menu = RoundMenu(parent=self) menu.addActions([ Action(self.tr('Star Platinum'), triggered=lambda c, b=button: b.setText(self.tr('Star Platinum'))), Action(self.tr('Crazy Diamond'), triggered=lambda c, b=button: b.setText(self.tr('Crazy Diamond'))), Action(self.tr("Gold Experience"), triggered=lambda c, b=button: b.setText(self.tr("Gold Experience"))), Action(self.tr('Sticky Fingers'), triggered=lambda c, b=button: b.setText(self.tr('Sticky Fingers'))), ]) return menu