本文整理汇总了Python中PyQt5.QtWidgets.QButtonGroup.setExclusive方法的典型用法代码示例。如果您正苦于以下问题:Python QButtonGroup.setExclusive方法的具体用法?Python QButtonGroup.setExclusive怎么用?Python QButtonGroup.setExclusive使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PyQt5.QtWidgets.QButtonGroup
的用法示例。
在下文中一共展示了QButtonGroup.setExclusive方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: initUI
# 需要导入模块: from PyQt5.QtWidgets import QButtonGroup [as 别名]
# 或者: from PyQt5.QtWidgets.QButtonGroup import setExclusive [as 别名]
def initUI(self):
# create menus
menu.GuiMenu()
menu.WidgetMenu()
menu.SettingsMenu()
menu.LoggingMenu()
# main layout
mainVLayout = QVBoxLayout()
elementHLayouts = []
# top element: toolbar, status
t = QLabel("Toolbar")
s = QLabel("Status")
toolbarStatusHLayout = QHBoxLayout()
toolbarStatusHLayout.addWidget(t)
toolbarStatusHLayout.addWidget(s)
elementHLayouts.append(toolbarStatusHLayout)
# mid element: menu buttons
menubuttonsHLayout = QHBoxLayout()
stackedButtonsWidget = QStackedWidget()
buttonGroup = QButtonGroup(self)
buttonGroup.setExclusive(True)
for m in menu.Menu.menus:
btn = QPushButton(m.name)
btn.setCheckable(True)
btn.pressed.connect(lambda m=m: stackedButtonsWidget.setCurrentWidget(m))
menubuttonsHLayout.addWidget(btn)
buttonGroup.addButton(btn)
stackedButtonsWidget.addWidget(m)
elementHLayouts.append(menubuttonsHLayout)
# bot element: menu specific widgets
menuwidgetsHLayout = QHBoxLayout()
menuwidgetsHLayout.addWidget(stackedButtonsWidget)
elementHLayouts.append(menuwidgetsHLayout)
# click first button for defined initial state
if len(buttonGroup.buttons()) > 0:
buttonGroup.buttons()[0].click()
for l in elementHLayouts:
mainVLayout.addLayout(l)
self.setLayout(mainVLayout)
示例2: DataCheck
# 需要导入模块: from PyQt5.QtWidgets import QButtonGroup [as 别名]
# 或者: from PyQt5.QtWidgets.QButtonGroup import setExclusive [as 别名]
#.........这里部分代码省略.........
self.txt_cnf = ('<font color="red">目的変数を1つ選択し,'
'targetの列にチェックをいれてください。')
if self.params.task.lower() == 'classification':
self.txt_cnf += '<br>目的変数はカテゴリ変数である必要があります。</font>'
else:
self.txt_cnf += '<br>目的変数は量的変数である必要があります。</font>'
else:
self.txt_cnf = ('<font color="red">Select one variable as target variable,'
'then set the column of "target" of the variable checked.')
if self.params.task.lower() == 'classification':
self.txt_cnf += '<br>Target variable must be a categorical variable.</font>'
else:
self.txt_cnf += '<br>Target variable must be a numerical variable.</font>'
self.lbl_cnf = QLabel(self.txt_cnf, self.inner)
self.vbox.addWidget(self.lbl_cnf)
self.vbox.addStretch(1)
self.btn = QPushButton('Next', self.inner)
self.btn.setStyleSheet('QPushButton{font: bold; font-size: 15pt; background-color: white;};')
if self.params.lang == 'en':
self.btn.clicked.connect(lambda: self.button_func('Overfitting'))
else:
self.btn.clicked.connect(lambda: self.button_func('過学習'))
if self.obj_group.checkedButton() is None:
self.btn.setEnabled(False)
else:
self.btn.setEnabled(True)
self.vbox.addWidget(self.btn)
def __make_cell(self, c, name, col_type, col_type_def):
cell = QWidget(self.inner)
rbtn = QRadioButton('', cell)
rbtn.toggled.connect(lambda: self.rbtn_clicked(name + '_' + str(c)))
hbl = QHBoxLayout(cell)
hbl.addWidget(rbtn)
hbl.setContentsMargins(0, 0, 0, 0)
hbl.setAlignment(Qt.AlignCenter)
cell.setLayout(hbl)
if name == 'cat':
if col_type == 'object':
rbtn.setChecked(True)
self.lst_cat.append(rbtn)
elif name == 'num':
if col_type != 'object':
rbtn.setChecked(True)
if col_type_def == 'object':
rbtn.setEnabled(False)
self.lst_num.append(rbtn)
elif name == 'obj':
if col_type == 'object' and self.params.task == 'Regression':
rbtn.setEnabled(False)
elif col_type != 'object' and self.params.task == 'Classification':
rbtn.setEnabled(False)
if self.params.columns[c] == self.params.objective:
rbtn.setChecked(True)
self.lst_obj.append(rbtn)
return cell
def rbtn_clicked(self, text):
name, idx = text.split('_')
idx = int(idx)
if len(self.lst_obj) <= idx:
return
if self.lst_num[idx].isChecked():
if self.params.task == 'Classification':
self.obj_group.setExclusive(False)
self.lst_obj[idx].setChecked(False)
self.obj_group.setExclusive(True)
self.lst_obj[idx].setEnabled(False)
elif self.params.task == 'Regression':
self.lst_obj[idx].setEnabled(True)
self.params.col_types[idx] = self.params.col_types_def[idx]
elif self.lst_cat[idx].isChecked():
if self.params.task == 'Classification':
self.lst_obj[idx].setEnabled(True)
elif self.params.task == 'Regression':
self.obj_group.setExclusive(False)
self.lst_obj[idx].setChecked(False)
self.obj_group.setExclusive(True)
self.lst_obj[idx].setEnabled(False)
self.params.col_types[idx] = 'object'
if self.obj_group.checkedButton() is None:
self.params.objective = None
self.lbl_cnf.setText(self.txt_cnf)
self.btn.setEnabled(False)
else:
self.params.objective =\
self.params.columns[self.obj_group.checkedId()]
self.lbl_cnf.setText('<br>')
self.btn.setEnabled(True)
self.params.col_types_changed = True
示例3: ToggleToolBar
# 需要导入模块: from PyQt5.QtWidgets import QButtonGroup [as 别名]
# 或者: from PyQt5.QtWidgets.QButtonGroup import setExclusive [as 别名]
class ToggleToolBar(QWidget):
index = 0
buttons = []
rows = []
maxRow = 7
maxCol = 4
selectedFrame = []
selectedButtons = []
def __init__(self):
super(ToggleToolBar, self).__init__()
self.setFixedSize(300,560)
self.container = QVBoxLayout()
self.container.setAlignment(Qt.AlignLeft)
self.container.setSpacing(5)
for i in range(0,self.maxRow):
row = QHBoxLayout()
row.setAlignment(Qt.AlignTop)
row.setSpacing(5)
self.container.addLayout(row)
self.rows.append(row)
self.buttonGroup = QButtonGroup()
self.buttonGroup.setExclusive(False)
self.setLayout(self.container)
self.buttonGroup.buttonClicked[int].connect(self.imageSelected)
def imageSelected(self,imgId):
button = self.buttons[imgId]
if button.pixMap in self.selectedFrame and (not button.isChecked()):
self.selectedFrame.remove(button.pixMap)
self.selectedButtons.remove(button)
if (not (button.pixMap in self.selectedFrame)) and button.isChecked():
self.selectedFrame.append(button.pixMap)
self.selectedButtons.append(button)
def getSelected(self):
return self.selectedFrame
def clearAllSelected(self):
for button in self.selectedButtons:
button.setChecked(False)
self.selectedButtons = []
self.selectedFrame = []
def addImageButton(self,image):
imageButton = ImageToggleButton(self.index,image)
self.buttonGroup.addButton(imageButton,self.index)
self.rows[self.index//self.maxCol].addWidget(imageButton)
self.buttons.append(imageButton)
self.index += 1
def createImageButtons(self,imagePath):
groupImg = QImage(imagePath)
width = groupImg.width()
height = groupImg.height()
frameSize = width
for i in range(0,height//width):
img = groupImg.copy(0,i*frameSize,frameSize,frameSize);
self.addImageButton(img)
def removeAllButton(self):
for i in range(0,self.index):
row = self.rows[i // self.maxCol]
row.removeWidget(self.buttons[i])
self.buttonGroup.removeButton(self.buttons[i])
self.buttons[i].close()
self.buttons = []
self.index = 0
示例4: __init__
# 需要导入模块: from PyQt5.QtWidgets import QButtonGroup [as 别名]
# 或者: from PyQt5.QtWidgets.QButtonGroup import setExclusive [as 别名]
def __init__(self, parent):
super().__init__(parent)
self.setAcceptDrops(True)
self.parent_widget = parent
self.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.MinimumExpanding)
self._widget_layout = QHBoxLayout(self)
# widget stuff
self._d_widget = QWidget(self)
self._d_widget.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.MinimumExpanding)
self._widget_layout.addWidget(self._d_widget)
self.main_layout = QVBoxLayout(self._d_widget)
self.main_layout.setSpacing(0)
self.main_layout.setContentsMargins(0,0,0,0)
self.arrow_handle = misc.ArrowHandle(self)
self.arrow_handle.CLICKED.connect(self.slide)
self._widget_layout.addWidget(self.arrow_handle)
self.setContentsMargins(0,0,-self.arrow_handle.width(),0)
self.show_all_galleries_btn = QPushButton("Show all galleries")
self.show_all_galleries_btn.clicked.connect(lambda:parent.manga_list_view.sort_model.set_gallery_list())
self.show_all_galleries_btn.clicked.connect(self.show_all_galleries_btn.hide)
self.show_all_galleries_btn.setIcon(app_constants.CROSS_ICON_WH)
self.show_all_galleries_btn.hide()
self.main_layout.addWidget(self.show_all_galleries_btn)
self.main_buttons_layout = QHBoxLayout()
self.main_layout.addLayout(self.main_buttons_layout)
# buttons
bgroup = QButtonGroup(self)
bgroup.setExclusive(True)
self.lists_btn = QPushButton("")
self.lists_btn.setIcon(app_constants.G_LISTS_ICON_WH)
self.lists_btn.setCheckable(True)
bgroup.addButton(self.lists_btn)
self.artist_btn = QPushButton("")
self.artist_btn.setIcon(app_constants.ARTISTS_ICON)
self.artist_btn.setCheckable(True)
bgroup.addButton(self.artist_btn)
self.ns_tags_btn = QPushButton("")
self.ns_tags_btn.setIcon(app_constants.NSTAGS_ICON)
self.ns_tags_btn.setCheckable(True)
bgroup.addButton(self.ns_tags_btn)
self.lists_btn.setChecked(True)
self.main_buttons_layout.addWidget(self.lists_btn)
self.main_buttons_layout.addWidget(self.artist_btn)
self.main_buttons_layout.addWidget(self.ns_tags_btn)
# buttons contents
self.stacked_layout = QStackedLayout()
self.main_layout.addLayout(self.stacked_layout)
# lists
gallery_lists_dummy = QWidget(self)
self.lists = GalleryLists(self)
create_new_list_btn = QPushButton()
create_new_list_btn.setIcon(QIcon(app_constants.PLUS_ICON))
create_new_list_btn.setIconSize(QSize(15, 15))
create_new_list_btn.clicked.connect(lambda: self.lists.create_new_list())
create_new_list_btn.adjustSize()
create_new_list_btn.setFixedSize(create_new_list_btn.width(), create_new_list_btn.height())
create_new_list_btn.setToolTip("Create a new list!")
lists_l = QVBoxLayout(gallery_lists_dummy)
lists_l.setContentsMargins(0,0,0,0)
lists_l.setSpacing(0)
lists_l.addWidget(self.lists)
lists_l.addWidget(create_new_list_btn)
lists_index = self.stacked_layout.addWidget(gallery_lists_dummy)
self.lists.GALLERY_LIST_CLICKED.connect(parent.manga_list_view.sort_model.set_gallery_list)
self.lists.GALLERY_LIST_CLICKED.connect(self.show_all_galleries_btn.show)
self.lists.GALLERY_LIST_REMOVED.connect(self.show_all_galleries_btn.click)
self.lists_btn.clicked.connect(lambda:self.stacked_layout.setCurrentIndex(lists_index))
self.show_all_galleries_btn.clicked.connect(self.lists.clearSelection)
self.show_all_galleries_btn.clicked.connect(self.lists._reset_selected)
# artists
self.artists_list = GalleryArtistsList(parent.manga_list_view.gallery_model, self)
self.artists_list.artist_clicked.connect(lambda a: parent.search('artist:"{}"'.format(a)))
artists_list_index = self.stacked_layout.addWidget(self.artists_list)
self.artist_btn.clicked.connect(lambda:self.stacked_layout.setCurrentIndex(artists_list_index))
#self.lists.GALLERY_LIST_CLICKED.connect(self.artists_list.set_current_glist)
self.show_all_galleries_btn.clicked.connect(self.artists_list.clearSelection)
#self.show_all_galleries_btn.clicked.connect(lambda:self.artists_list.set_current_glist())
# ns_tags
self.tags_tree = TagsTreeView(self)
self.tags_tree.TAG_SEARCH.connect(parent.search)
self.tags_tree.NEW_LIST.connect(self.lists.create_new_list)
self.tags_tree.setHeaderHidden(True)
self.show_all_galleries_btn.clicked.connect(self.tags_tree.clearSelection)
self.tags_layout = QVBoxLayout(self.tags_tree)
ns_tags_index = self.stacked_layout.addWidget(self.tags_tree)
self.ns_tags_btn.clicked.connect(lambda:self.stacked_layout.setCurrentIndex(ns_tags_index))
self.slide_animation = misc.create_animation(self, "maximumSize")
self.slide_animation.stateChanged.connect(self._slide_hide)
self.slide_animation.setEasingCurve(QEasingCurve.InOutQuad)
示例5: ToolbarTabManager
# 需要导入模块: from PyQt5.QtWidgets import QButtonGroup [as 别名]
# 或者: from PyQt5.QtWidgets.QButtonGroup import setExclusive [as 别名]
class ToolbarTabManager(QObject):
""
def __init__(self, toolbar, parent=None):
super().__init__(parent)
self.parent_widget = parent
self.toolbar = toolbar
self._actions = []
self._last_selected = None
self.idx_widget = self.toolbar.addWidget(QWidget(self.toolbar))
self.idx_widget.setVisible(False)
self.agroup = QButtonGroup(self)
self.agroup.setExclusive(True)
self.library_btn = None
self.favorite_btn = self.addTab("Favorites", delegate_paint=False, icon=app_constants.STAR_ICON)
self.library_btn = self.addTab("Library", delegate_paint=False, icon=app_constants.GRIDL_ICON)
self.idx_widget = self.toolbar.addWidget(QWidget(self.toolbar))
self.idx_widget.setVisible(False)
self.toolbar.addSeparator()
def _manage_selected(self, b):
if self._last_selected == b:
return
if self._last_selected:
self._last_selected.selected = False
self._last_selected.view.list_view.sort_model.rowsInserted.disconnect(self.parent_widget.stat_row_info)
self._last_selected.view.list_view.sort_model.rowsRemoved.disconnect(self.parent_widget.stat_row_info)
self._last_selected.view.hide()
b.selected = True
self._last_selected = b
self.parent_widget.current_manga_view = b.view
b.view.list_view.sort_model.rowsInserted.connect(self.parent_widget.stat_row_info)
b.view.list_view.sort_model.rowsRemoved.connect(self.parent_widget.stat_row_info)
b.view.show()
def addTab(self, name, view_type=app_constants.ViewType.Default, delegate_paint=True, allow_sidebarwidget=False, icon=None):
if self.toolbar:
t = misc.ToolbarButton(self.toolbar, name)
if icon:
t.setIcon(icon)
else:
t.setIcon(app_constants.CIRCLE_ICON)
t.setCheckable(True)
self.agroup.addButton(t)
t.select.connect(self._manage_selected)
t.close_tab.connect(self.removeTab)
if self.library_btn:
t.view = gallery.MangaViews(view_type, self.parent_widget, allow_sidebarwidget)
t.view.hide()
t.close_tab.connect(lambda:self.library_btn.click())
if not allow_sidebarwidget:
t.clicked.connect(self.parent_widget.sidebar_list.arrow_handle.click)
else:
t.view = self.parent_widget.default_manga_view
if delegate_paint:
t.view.list_view.manga_delegate._paint_level = 9000 # over nine thousand!!!
self._actions.append(self.toolbar.insertWidget(self.idx_widget, t))
return t
def removeTab(self, button_or_index):
if self.toolbar:
if isinstance(button_or_index, int):
self.toolbar.removeAction(self._actions.pop(button_or_index))
else:
act_to_remove = None
for act in self._actions:
w = self.toolbar.widgetForAction(act)
if w == button_or_index:
self.toolbar.removeAction(act)
act_to_remove = act
break
if act_to_remove:
self._actions.remove(act)
示例6: Ui_Widget
# 需要导入模块: from PyQt5.QtWidgets import QButtonGroup [as 别名]
# 或者: from PyQt5.QtWidgets.QButtonGroup import setExclusive [as 别名]
class Ui_Widget(object):
""" Klasa definiująca GUI """
def setupUi(self, Widget):
# widgety rysujące kształty, instancje klasy Ksztalt
self.ksztalt1 = Ksztalt(self, Ksztalty.Polygon)
self.ksztalt2 = Ksztalt(self, Ksztalty.Ellipse)
self.ksztaltAktywny = self.ksztalt1
# przyciski CheckBox ###
uklad = QVBoxLayout() # układ pionowy
self.grupaChk = QButtonGroup()
for i, v in enumerate(('Kwadrat', 'Koło', 'Trójkąt', 'Linia')):
self.chk = QCheckBox(v)
self.grupaChk.addButton(self.chk, i)
uklad.addWidget(self.chk)
self.grupaChk.buttons()[self.ksztaltAktywny.ksztalt].setChecked(True)
# CheckBox do wyboru aktywnego kształtu
self.ksztaltChk = QCheckBox('<=')
self.ksztaltChk.setChecked(True)
uklad.addWidget(self.ksztaltChk)
# układ poziomy dla kształtów oraz przycisków CheckBox
ukladH1 = QHBoxLayout()
ukladH1.addWidget(self.ksztalt1)
ukladH1.addLayout(uklad)
ukladH1.addWidget(self.ksztalt2)
# koniec CheckBox ###
# Slider i LCDNumber ###
self.suwak = QSlider(Qt.Horizontal)
self.suwak.setMinimum(0)
self.suwak.setMaximum(255)
self.lcd = QLCDNumber()
self.lcd.setSegmentStyle(QLCDNumber.Flat)
# układ poziomy (splitter) dla slajdera i lcd
ukladH2 = QSplitter(Qt.Horizontal, self)
ukladH2.addWidget(self.suwak)
ukladH2.addWidget(self.lcd)
ukladH2.setSizes((125, 75))
# przyciski RadioButton ###
self.ukladR = QHBoxLayout()
for v in ('R', 'G', 'B'):
self.radio = QRadioButton(v)
self.ukladR.addWidget(self.radio)
self.ukladR.itemAt(0).widget().setChecked(True)
# grupujemy przyciski
self.grupaRBtn = QGroupBox('Opcje RGB')
self.grupaRBtn.setLayout(self.ukladR)
self.grupaRBtn.setObjectName('Radio')
self.grupaRBtn.setCheckable(True)
# układ poziomy dla grupy Radio
ukladH3 = QHBoxLayout()
ukladH3.addWidget(self.grupaRBtn)
# koniec RadioButton ###
# Lista ComboBox i SpinBox ###
self.listaRGB = QComboBox(self)
for v in ('R', 'G', 'B'):
self.listaRGB.addItem(v)
self.listaRGB.setEnabled(False)
# SpinBox
self.spinRGB = QSpinBox()
self.spinRGB.setMinimum(0)
self.spinRGB.setMaximum(255)
self.spinRGB.setEnabled(False)
# układ pionowy dla ComboBox i SpinBox
uklad = QVBoxLayout()
uklad.addWidget(self.listaRGB)
uklad.addWidget(self.spinRGB)
# do układu poziomego grupy Radio dodajemy układ ComboBox i SpinBox
ukladH3.insertSpacing(1, 25)
ukladH3.addLayout(uklad)
# koniec ComboBox i SpinBox ###
# przyciski PushButton ###
uklad = QHBoxLayout()
self.grupaP = QButtonGroup()
self.grupaP.setExclusive(False)
for v in ('R', 'G', 'B'):
self.btn = QPushButton(v)
self.btn.setCheckable(True)
self.grupaP.addButton(self.btn)
uklad.addWidget(self.btn)
# grupujemy przyciski
self.grupaPBtn = QGroupBox('Przyciski RGB')
self.grupaPBtn.setLayout(uklad)
self.grupaPBtn.setObjectName('Push')
self.grupaPBtn.setCheckable(True)
self.grupaPBtn.setChecked(False)
# koniec PushButton ###
# główny układ okna, wertykalny ###
ukladOkna = QVBoxLayout()
ukladOkna.addLayout(ukladH1)
ukladOkna.addWidget(ukladH2)
ukladOkna.addLayout(ukladH3)
ukladOkna.addWidget(self.grupaPBtn)
#.........这里部分代码省略.........
示例7: MainWindow
# 需要导入模块: from PyQt5.QtWidgets import QButtonGroup [as 别名]
# 或者: from PyQt5.QtWidgets.QButtonGroup import setExclusive [as 别名]
#.........这里部分代码省略.........
def fillButtonTriggered(self):
self.scene.setItemColor(QColor(self.fillAction.data()))
def lineButtonTriggered(self):
self.scene.setLineColor(QColor(self.lineAction.data()))
def handleFontChange(self):
font = self.fontCombo.currentFont()
font.setPointSize(self.fontSizeCombo.currentText().toInt()[0])
if self.boldAction.isChecked():
font.setWeight(QFont.Bold)
else:
font.setWeight(QFont.Normal)
font.setItalic(self.italicAction.isChecked())
font.setUnderline(self.underlineAction.isChecked())
self.scene.setFont(font)
def itemSelected(self, item):
font = item.font()
color = item.defaultTextColor()
self.fontCombo.setCurrentFont(font)
self.fontSizeCombo.setEditText(str(font.pointSize()))
self.boldAction.setChecked(font.weight() == QFont.Bold)
self.italicAction.setChecked(font.italic())
self.underlineAction.setChecked(font.underline())
def about(self):
QMessageBox.about(self, "About Diagram Scene",
"The <b>Diagram Scene</b> example shows use of the graphics framework.")
def createToolBox(self):
self.buttonGroup = QButtonGroup()
self.buttonGroup.setExclusive(False)
self.buttonGroup.buttonClicked[int].connect(self.buttonGroupClicked)
layout = QGridLayout()
layout.addWidget(self.createCellWidget("Conditional", DiagramItem.Conditional),
0, 0)
layout.addWidget(self.createCellWidget("Process", DiagramItem.Step), 0,
1)
layout.addWidget(self.createCellWidget("Input/Output", DiagramItem.Io),
1, 0)
textButton = QToolButton()
textButton.setCheckable(True)
self.buttonGroup.addButton(textButton, self.InsertTextButton)
textButton.setIcon(QIcon(QPixmap(':/images/textpointer.png').scaled(30, 30)))
textButton.setIconSize(QSize(50, 50))
textLayout = QGridLayout()
textLayout.addWidget(textButton, 0, 0, Qt.AlignHCenter)
textLayout.addWidget(QLabel("Text"), 1, 0, Qt.AlignCenter)
textWidget = QWidget()
textWidget.setLayout(textLayout)
layout.addWidget(textWidget, 1, 1)
layout.setRowStretch(3, 10)
layout.setColumnStretch(2, 10)
itemWidget = QWidget()
itemWidget.setLayout(layout)
self.backgroundButtonGroup = QButtonGroup()
self.backgroundButtonGroup.buttonClicked.connect(self.backgroundButtonGroupClicked)
示例8: MainWindow
# 需要导入模块: from PyQt5.QtWidgets import QButtonGroup [as 别名]
# 或者: from PyQt5.QtWidgets.QButtonGroup import setExclusive [as 别名]
#.........这里部分代码省略.........
self.view.resetMatrix()
self.view.translate(oldMatrix.dx(), oldMatrix.dy())
self.view.scale(newScale, newScale)
def itemColorChanged(self):
self.fillAction = self.sender()
self.fillColorToolButton.setIcon(
self.createColorToolButtonIcon( ':/images/floodfill.png',
QColor(self.fillAction.data())))
self.fillButtonTriggered()
def fillButtonTriggered(self):
self.scene.setItemColor(QColor(self.fillAction.data()))
def itemSelected(self, item):
font = item.font()
color = item.defaultTextColor()
self.fontCombo.setCurrentFont(font)
self.fontSizeCombo.setEditText(str(font.pointSize()))
self.boldAction.setChecked(font.weight() == QFont.Bold)
self.italicAction.setChecked(font.italic())
self.underlineAction.setChecked(font.underline())
def about(self):
QMessageBox.about(self, "About ITG Scene",
"The <b>ITG Scene</b> example shows use of the graphics framework.")
def createToolBox(self):
self.buttonGroup = QButtonGroup()
self.buttonGroup.setExclusive(False)
self.buttonGroup.buttonClicked[int].connect(self.buttonGroupClicked)
layout = QGridLayout()
layout.addWidget(self.createCellWidget("Diamond", ITGItem.Diamond),
0, 0)
layout.addWidget(self.createCellWidget("Square", ITGItem.Square), 0,
1)
layout.addWidget(self.createCellWidget("Parallelogram", ITGItem.Parallelogram),
1, 0)
layout.setRowStretch(3, 10)
layout.setColumnStretch(2, 10)
itemWidget = QWidget()
itemWidget.setLayout(layout)
self.backgroundButtonGroup = QButtonGroup()
self.toolBox = QToolBox()
self.toolBox.setSizePolicy(QSizePolicy(QSizePolicy.Maximum, QSizePolicy.Ignored))
self.toolBox.setMinimumWidth(itemWidget.sizeHint().width())
self.toolBox.addItem(itemWidget, "Basic Components")
def createActions(self):
self.toFrontAction = QAction(
QIcon(':/images/bringtofront.png'), "Bring to &Front",
self, shortcut="Ctrl+F", statusTip="Bring item to front",
triggered=self.bringToFront)
self.sendBackAction = QAction(
QIcon(':/images/sendtoback.png'), "Send to &Back", self,
shortcut="Ctrl+B", statusTip="Send item to back",
示例9: PlotWidget
# 需要导入模块: from PyQt5.QtWidgets import QButtonGroup [as 别名]
# 或者: from PyQt5.QtWidgets.QButtonGroup import setExclusive [as 别名]
class PlotWidget(QtWidgets.QWidget, plot_widget_class):
"""Wrapper widget for PyQtGraph adding some extra buttons"""
def __init__(self, parent=None, fps=100, title="", *args):
super(PlotWidget, self).__init__(*args)
self.setupUi(self)
# Limit the plot update to 10Hz
self._ts = time()
self._delay = 0.1
# Check if we could import PyQtGraph, if not then stop here
if not _pyqtgraph_found:
self.can_enable = False
return
else:
self.can_enable = True
self._items = {}
self._last_item = 0
self.setSizePolicy(QtWidgets.QSizePolicy(
QtWidgets.QSizePolicy.MinimumExpanding,
QtWidgets.QSizePolicy.MinimumExpanding))
self.setMinimumSize(self.minimumSizeHint())
self.parent = parent
pg.setConfigOption('background', 'w')
pg.setConfigOption('foreground', 'k')
self._plot_widget = pg.PlotWidget()
self._plot_widget.hideButtons()
self._plot_widget.setLabel('bottom', "Time", "ms")
self._plot_widget.addLegend()
self._plot_widget.getViewBox().disableAutoRange(ViewBox.XAxis)
self._plot_widget.getViewBox().sigRangeChangedManually.connect(
self._manual_range_change)
self._plot_widget.getViewBox().setMouseEnabled(x=False, y=True)
self._plot_widget.getViewBox().setMouseMode(ViewBox.PanMode)
self.plotLayout.addWidget(self._plot_widget)
# self.saveToFile.clicked.connect(self.saveToFileSignal)
self._x_min = 0
self._x_max = 500
self._enable_auto_y.setChecked(True)
self._enable_samples_x.setChecked(True)
self._last_ts = None
self._dtime = None
self._x_range = (
float(self._range_x_min.text()), float(self._range_x_max.text()))
self._nbr_samples = int(self._nbr_of_samples_x.text())
self._nbr_of_samples_x.valueChanged.connect(self._nbr_samples_changed)
self._range_y_min.valueChanged.connect(self._y_range_changed)
self._range_y_max.valueChanged.connect(self._y_range_changed)
self._y_btn_group = QButtonGroup()
self._y_btn_group.addButton(self._enable_auto_y)
self._y_btn_group.addButton(self._enable_range_y)
self._y_btn_group.setExclusive(True)
self._y_btn_group.buttonClicked.connect(self._y_mode_change)
self._x_btn_group = QButtonGroup()
self._x_btn_group.addButton(self._enable_range_x)
self._x_btn_group.addButton(self._enable_samples_x)
self._x_btn_group.addButton(self._enable_seconds_x)
self._x_btn_group.addButton(self._enable_manual_x)
self._x_btn_group.setExclusive(True)
self._x_btn_group.buttonClicked.connect(self._x_mode_change)
self._draw_graph = True
self._auto_redraw.stateChanged.connect(self._auto_redraw_change)
def _auto_redraw_change(self, state):
"""Callback from the auto redraw checkbox"""
if state == 0:
self._draw_graph = False
else:
self._draw_graph = True
def _x_mode_change(self, box):
"""Callback when user changes the X-axis mode"""
if box == self._enable_range_x:
logger.info("Enable range x")
self._x_range = (
float(self._range_x_min.text()),
float(self._range_x_max.text()))
else:
self._range_x_min.setEnabled(False)
self._range_x_max.setEnabled(False)
def _y_mode_change(self, box):
"""Callback when user changes the Y-axis mode"""
if box == self._enable_range_y:
self._range_y_min.setEnabled(True)
self._range_y_max.setEnabled(True)
y_range = (
float(self._range_y_min.value()),
#.........这里部分代码省略.........
示例10: AudioVideoTab
# 需要导入模块: from PyQt5.QtWidgets import QButtonGroup [as 别名]
# 或者: from PyQt5.QtWidgets.QButtonGroup import setExclusive [as 别名]
#.........这里部分代码省略.........
self.command_update_audbitrate)
self.chan1QRB.clicked.connect(
lambda: self.command_update_channels('1'))
self.chan2QRB.clicked.connect(
lambda: self.command_update_channels('2'))
self.preserveaspectQChB.toggled.connect(
self.command_update_preserve_aspect)
self.preservesizeQChB.toggled.connect(
self.command_update_preserve_size)
def resize_parent(self):
"""Give MainWindow its default size."""
self.parent.setMinimumSize(self.parent.sizeHint())
self.parent.resize(self.parent.sizeHint())
def clear(self):
"""Clear all values of graphical widgets."""
lines = [
self.commandQLE, self.widthQLE, self.heightQLE,
self.aspect1QLE, self.aspect2QLE, self.frameQLE,
self.bitrateQLE, self.threadsQLE, self.beginQLE,
self.embedQLE, self.durationQLE
]
for i in lines:
i.clear()
self.vidcodecQCB.setCurrentIndex(0)
self.audcodecQCB.setCurrentIndex(0)
self.freqQCB.setCurrentIndex(0)
self.audbitrateQCB.setCurrentIndex(0)
self.rotateQCB.setCurrentIndex(0)
self.preserveaspectQChB.setChecked(False)
self.preservesizeQChB.setChecked(False)
self.group.setExclusive(False)
self.chan1QRB.setChecked(False)
self.chan2QRB.setChecked(False)
self.group.setExclusive(True)
# setExclusive(False) in order to be able to uncheck checkboxes and
# then setExclusive(True) so only one radio button can be set
def fill_video_comboboxes(self, vcodecs, acodecs, extraformats):
self.vidcodecQCB.currentIndexChanged.disconnect()
self.audcodecQCB.currentIndexChanged.disconnect()
self.vidcodecQCB.clear()
self.audcodecQCB.clear()
self.extQCB.clear()
self.vidcodecQCB.addItems([self.defaultStr, self.DisableStream] + vcodecs)
self.audcodecQCB.addItems([self.defaultStr, self.DisableStream] + acodecs)
self.extQCB.addItems(sorted(self.formats + extraformats))
self.vidcodecQCB.currentIndexChanged.connect(self.command_update_vcodec)
self.audcodecQCB.currentIndexChanged.connect(self.command_update_acodec)
def ok_to_continue(self):
"""
Check if everything is ok with audiovideotab to continue conversion.
Returns boolean.
"""
if not self.parent.ffmpeg_path:
QMessageBox.warning(self, 'FF Multi Converter - ' + self.tr(
'Error!'), self.tr('FFmpeg is not installed!'))
return False
return True
def open_subtitle_file(self):
示例11: UnitConverter
# 需要导入模块: from PyQt5.QtWidgets import QButtonGroup [as 别名]
# 或者: from PyQt5.QtWidgets.QButtonGroup import setExclusive [as 别名]
class UnitConverter(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.tab = QTabWidget(self)
# Length Tab
self.length = QWidget()
self.lengthLabel = QLabel("Length Converter")
self.lengthFrom = QLineEdit()
self.lengthTo = QLineEdit()
self.kilometersFrom = QRadioButton('Km',self)
self.kilometersTo = QRadioButton('Km',self)
self.metersFrom = QRadioButton('m', self)
self.metersTo = QRadioButton('m', self)
self.feetFrom = QRadioButton('ft', self)
self.feetTo = QRadioButton('ft',self)
self.inchesFrom = QRadioButton('in', self)
self.inchesTo = QRadioButton('in', self)
self.lengthButton = QPushButton("Convert")
self.lengthButton.clicked.connect(self.convertLength)
self.groupLength = QButtonGroup()
self.groupLength.addButton(self.kilometersFrom)
self.groupLength.addButton(self.kilometersTo)
self.groupLength.addButton(self.metersFrom)
self.groupLength.addButton(self.metersTo)
self.groupLength.addButton(self.feetFrom)
self.groupLength.addButton(self.feetTo)
self.groupLength.addButton(self.inchesFrom)
self.groupLength.addButton(self.inchesTo)
self.groupLength.setExclusive(False)
self.gridLength = QGridLayout()
self.gridLength.addWidget(self.lengthLabel,0,1)
self.gridLength.addWidget(self.lengthFrom,1,1)
self.gridLength.addWidget(self.lengthTo,1,2)
self.gridLength.addWidget(self.kilometersFrom,2,1)
self.gridLength.addWidget(self.kilometersTo,2,2)
self.gridLength.addWidget(self.metersFrom,3,1)
self.gridLength.addWidget(self.metersTo,3,2)
self.gridLength.addWidget(self.feetFrom,4,1)
self.gridLength.addWidget(self.feetTo,4,2)
self.gridLength.addWidget(self.inchesFrom,5,1)
self.gridLength.addWidget(self.inchesTo,5,2)
self.gridLength.addWidget(self.lengthButton,6,2)
self.length.setLayout(self.gridLength)
# Volume Tab
self.volume = QWidget()
self.volumeLabel = QLabel("Volume Converter")
self.volumeFrom = QLineEdit()
self.volumeTo = QLineEdit()
self.litresFrom = QRadioButton('L',self)
self.litresTo = QRadioButton('L', self)
self.millilitresFrom = QRadioButton('mL', self)
self.millilitresTo = QRadioButton('mL', self)
self.fluidOuncesFrom = QRadioButton('fl oz', self)
self.fluidOuncesTo = QRadioButton('fl oz', self)
self.volumeButton = QPushButton("Convert")
self.volumeButton.clicked.connect(self.convertVolume)
self.groupVolume = QButtonGroup()
self.groupVolume.addButton(self.litresFrom)
self.groupVolume.addButton(self.litresTo)
self.groupVolume.addButton(self.millilitresFrom)
self.groupVolume.addButton(self.millilitresTo)
self.groupVolume.addButton(self.fluidOuncesFrom)
self.groupVolume.addButton(self.fluidOuncesTo)
self.groupVolume.setExclusive(False)
self.gridVolume = QGridLayout()
self.gridVolume.addWidget(self.volumeLabel,0,1)
self.gridVolume.addWidget(self.volumeFrom,1,1)
self.gridVolume.addWidget(self.volumeTo,1,2)
self.gridVolume.addWidget(self.litresFrom,2,1)
self.gridVolume.addWidget(self.litresTo,2,2)
self.gridVolume.addWidget(self.millilitresFrom,3,1)
self.gridVolume.addWidget(self.millilitresTo,3,2)
self.gridVolume.addWidget(self.fluidOuncesFrom,4,1)
self.gridVolume.addWidget(self.fluidOuncesTo,4,2)
self.gridVolume.addWidget(self.volumeButton,5,2)
self.volume.setLayout(self.gridVolume)
# Weight Tab
self.weight = QWidget()
self.weightLabel = QLabel("Weight Converter")
#.........这里部分代码省略.........
示例12: create_rows
# 需要导入模块: from PyQt5.QtWidgets import QButtonGroup [as 别名]
# 或者: from PyQt5.QtWidgets.QButtonGroup import setExclusive [as 别名]
def create_rows(self, layout, sarea):
u"""Build the rows of the dialog box"""
play_button_group = QButtonGroup(sarea)
old_play_button_group = QButtonGroup(sarea)
for num, entry in enumerate(self.entries_list, 2):
tt_text = self.build_text_help_label(entry)
ico_label = QLabel('', sarea)
ico_label.setToolTip(tt_text)
if entry.icon:
ico_label.setPixmap(QPixmap.fromImage(entry.icon))
layout.addWidget(ico_label, num, 0)
tt_label = QLabel(entry.display_word, sarea)
tt_label.setToolTip(tt_text)
layout.addWidget(tt_label, num, 1)
if self.hide_text:
tt_label.hide()
# Play button.
t_play_button = QPushButton(sarea)
play_button_group.addButton(t_play_button, num-2)
t_play_button.setToolTip(self.play_help)
t_play_button.setIcon(QIcon(os.path.join(icons_dir, 'play.png')))
layout.addWidget(t_play_button, num, self.play_column)
if self.note[entry.audio_field_name]:
t_play_old_button = QPushButton(sarea)
old_play_button_group.addButton(t_play_old_button, num-2)
t_play_old_button.setIcon(
QIcon(os.path.join(icons_dir, 'play.png')))
if not self.hide_text:
t_play_old_button.setToolTip(
self.note[entry.audio_field_name])
else:
t_play_old_button.setToolTip(self.play_old_help_short)
layout.addWidget(t_play_old_button, num, self.play_old_column)
else:
dummy_label = QLabel('', sarea)
dummy_label.setToolTip(self.play_old_empty_line_help)
layout.addWidget(dummy_label, num, self.play_old_column)
# The group where we later look what to do:
t_button_group = QButtonGroup(sarea)
t_button_group.setExclusive(True)
# Now the four buttons
t_add_button = QPushButton(sarea)
t_add_button.setCheckable(True)
t_add_button.setFlat(True)
t_add_button.setToolTip(self.add_help_text_short)
t_add_button.setIcon(QIcon(os.path.join(icons_dir, 'add.png')))
layout.addWidget(t_add_button, num, self.add_column)
t_button_group.addButton(t_add_button, Action.Add)
t_keep_button = QPushButton(sarea)
t_keep_button.setCheckable(True)
t_keep_button.setFlat(True)
t_keep_button.setToolTip(self.keep_help_text_short)
t_keep_button.setIcon(QIcon(os.path.join(icons_dir, 'keep.png')))
layout.addWidget(t_keep_button, num, self.keep_column)
t_button_group.addButton(t_keep_button, Action.Keep)
t_delete_button = QPushButton(sarea)
t_delete_button.setCheckable(True)
t_delete_button.setFlat(True)
t_delete_button.setToolTip(self.delete_help_text_short)
t_delete_button.setIcon(
QIcon(os.path.join(icons_dir, 'delete.png')))
layout.addWidget(t_delete_button, num, self.delete_column)
t_button_group.addButton(t_delete_button, Action.Delete)
t_blacklist_button = QPushButton(sarea)
t_blacklist_button.setCheckable(True)
t_blacklist_button.setFlat(True)
t_blacklist_button.setToolTip(self.blacklist_help_text_short)
t_blacklist_button.setIcon(
QIcon(os.path.join(icons_dir, 'blacklist.png')))
if entry.entry_hash:
layout.addWidget(
t_blacklist_button, num, self.blacklist_column)
else:
t_blacklist_button.hide()
dummy_label_bl = QLabel('', sarea)
dummy_label_bl.setToolTip(self.blacklist_empty_line_help)
layout.addWidget(dummy_label_bl, num, self.blacklist_column)
t_button_group.button(entry.action).setChecked(True)
# New: check a button based on how good the downloader is.
t_button_group.addButton(t_blacklist_button, Action.Blacklist)
self.buttons_groups.append(t_button_group)
play_button_group.buttonClicked.connect(
lambda button: play(
self.entries_list[play_button_group.id(button)].file_path))
# N.B.: anki.sound.play() plays files from anywhere, not just
# from the colection.media folder. We should be good,
# here. (This behaviour may be a security risk, idk.)
old_play_button_group.buttonClicked.connect(
lambda button: playFromText(
self.note[
self.entries_list[
old_play_button_group.id(button)].audio_field_name]))
示例13: FileDialogWizardDialog
# 需要导入模块: from PyQt5.QtWidgets import QButtonGroup [as 别名]
# 或者: from PyQt5.QtWidgets.QButtonGroup import setExclusive [as 别名]
class FileDialogWizardDialog(QDialog, Ui_FileDialogWizardDialog):
"""
Class implementing the color dialog wizard dialog.
It displays a dialog for entering the parameters
for the QFileDialog code generator.
"""
def __init__(self, pyqtVariant, parent=None):
"""
Constructor
@param pyqtVariant variant of PyQt (integer; 0, 4 or 5)
@param parent parent widget (QWidget)
"""
super(FileDialogWizardDialog, self).__init__(parent)
self.setupUi(self)
self.eStartWithCompleter = E5FileCompleter(self.eStartWith)
self.eWorkDirCompleter = E5DirCompleter(self.eWorkDir)
self.__pyqtVariant = pyqtVariant
self.__typeButtonsGroup = QButtonGroup(self)
self.__typeButtonsGroup.setExclusive(True)
self.__typeButtonsGroup.addButton(self.rOpenFile, 1)
self.__typeButtonsGroup.addButton(self.rOpenFiles, 2)
self.__typeButtonsGroup.addButton(self.rSaveFile, 3)
self.__typeButtonsGroup.addButton(self.rfOpenFile, 11)
self.__typeButtonsGroup.addButton(self.rfOpenFiles, 12)
self.__typeButtonsGroup.addButton(self.rfSaveFile, 13)
self.__typeButtonsGroup.addButton(self.rDirectory, 20)
self.__typeButtonsGroup.buttonClicked[int].connect(
self.__toggleInitialFilterAndResult)
self.__toggleInitialFilterAndResult(1)
self.pyqtComboBox.addItems(["PyQt4", "PyQt5"])
if self.__pyqtVariant == 5:
self.pyqtComboBox.setCurrentIndex(1)
else:
self.pyqtComboBox.setCurrentIndex(0)
self.rSaveFile.toggled[bool].connect(self.__toggleConfirmCheckBox)
self.rfSaveFile.toggled[bool].connect(self.__toggleConfirmCheckBox)
self.rDirectory.toggled[bool].connect(self.__toggleGroupsAndTest)
self.cStartWith.toggled[bool].connect(self.__toggleGroupsAndTest)
self.cWorkDir.toggled[bool].connect(self.__toggleGroupsAndTest)
self.cFilters.toggled[bool].connect(self.__toggleGroupsAndTest)
self.bTest = self.buttonBox.addButton(
self.tr("Test"), QDialogButtonBox.ActionRole)
msh = self.minimumSizeHint()
self.resize(max(self.width(), msh.width()), msh.height())
def __adjustOptions(self, options):
"""
Private method to adjust the file dialog options.
@param options file dialog options (QFileDialog.Options)
@return modified options (QFileDialog.Options)
"""
if Globals.isLinuxPlatform():
options |= QFileDialog.DontUseNativeDialog
return options
@pyqtSlot(str)
def on_pyqtComboBox_currentIndexChanged(self, txt):
"""
Private slot to setup the dialog for the selected PyQt variant.
@param txt text of the selected combo box entry (string)
"""
self.rfOpenFile.setEnabled(txt == "PyQt5")
self.rfOpenFiles.setEnabled(txt == "PyQt5")
self.rfSaveFile.setEnabled(txt == "PyQt5")
if txt == "PyQt5":
if self.rfOpenFile.isChecked():
self.rOpenFile.setChecked(True)
elif self.rfOpenFiles.isChecked():
self.rOpenFiles.setChecked(True)
elif self.rfSaveFile.isChecked():
self.rSaveFile.setChecked(True)
self.__pyqtVariant = 5 if txt == "PyQt5" else 4
self.__toggleInitialFilterAndResult(
self.__typeButtonsGroup.checkedId())
def on_buttonBox_clicked(self, button):
"""
Private slot called by a button of the button box clicked.
@param button button that was clicked (QAbstractButton)
"""
if button == self.bTest:
self.on_bTest_clicked()
@pyqtSlot()
def on_bTest_clicked(self):
#.........这里部分代码省略.........
示例14: Example
# 需要导入模块: from PyQt5.QtWidgets import QButtonGroup [as 别名]
# 或者: from PyQt5.QtWidgets.QButtonGroup import setExclusive [as 别名]
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
label1 = QLabel("需要校验的数据:")
label2 = QLabel("校验计算结果(HEX):")
copy_btn1 = QPushButton('复制')
copy_btn2 = QPushButton('复制')
copy_btn1.setFixedWidth(60)
copy_btn2.setFixedWidth(60)
self.text1 = QTextEdit()
self.text1.setAcceptRichText(False)
self.text2 = QTextEdit()
self.text2.setAcceptRichText(False)
label3 = QLabel('输入格式:')
self.formatGroup = QButtonGroup()
self.format_ascii = QRadioButton('ASCII')
self.format_hex = QRadioButton('HEX')
self.format_hex.setChecked(True)
self.formatGroup.addButton(self.format_ascii)
self.formatGroup.addButton(self.format_hex)
self.formatGroup.setExclusive(True)
label4 = QLabel('校验长度:')
# self.lengthGroup = QButtonGroup()
# self.length_1 = QRadioButton('1')
# self.length_1.setChecked(True)
# self.length_2 = QRadioButton('2')
# self.length_4 = QRadioButton('4')
# self.lengthGroup.addButton(self.length_1)
# self.lengthGroup.addButton(self.length_2)
# self.lengthGroup.addButton(self.length_4)
# self.lengthGroup.setExclusive(True)
# self.format = QComboBox()
# self.format.addItems(['ASCII', 'HEX'])
# self.format.setCurrentIndex(1)
self.length = QComboBox()
self.length.addItems(['1','2','4'])
btn1 = QPushButton('和校验 >>')
btn1.setToolTip('不带进位')
btn2 = QPushButton('异或校验 >>')
btn3 = QPushButton('CRC校验 >>')
btn3.setToolTip('目前只支持16位CRC校验,校验长度请选择2')
btn4 = QPushButton('进位和校验 >>')
btn5 = QPushButton('预留')
btn6 = QPushButton('预留')
btn_clr = QPushButton('清空')
leftGrid = QGridLayout()
leftGrid.setSpacing(10)
leftGrid.addWidget(label1, 1, 0)
leftGrid.addWidget(label2, 1, 1)
leftGrid.addWidget(self.text1, 2, 0)
leftGrid.addWidget(self.text2, 2, 1)
leftGrid.addWidget(copy_btn1, 3, 0)
leftGrid.addWidget(copy_btn2, 3, 1)
rightVBox = QVBoxLayout()
rightVBox.setAlignment(Qt.AlignVCenter)
rightVBox.addStretch()
rightVBox.addWidget(label3)
rightVBox.addWidget(self.format_hex)
rightVBox.addWidget(self.format_ascii)
rightVBox.addStretch()
rightVBox.addWidget(label4)
# rightVBox.addWidget(self.length_1)
# rightVBox.addWidget(self.length_2)
# rightVBox.addWidget(self.length_4)
# rightVBox.addWidget(self.format)
rightVBox.addWidget(self.length)
rightVBox.addStretch()
rightVBox.addWidget(btn1)
rightVBox.addWidget(btn4)
rightVBox.addWidget(btn2)
rightVBox.addWidget(btn3)
# rightVBox.addWidget(btn5)
# rightVBox.addWidget(btn6)
rightVBox.addStretch()
rightVBox.addWidget(btn_clr)
mainBox = QHBoxLayout()
mainBox.addLayout(leftGrid)
mainBox.addLayout(rightVBox)
self.setLayout(mainBox)
# 按钮连接到槽
btn1.clicked.connect(self.button1Clicked)
btn2.clicked.connect(self.button2Clicked)
btn3.clicked.connect(self.button3Clicked)
btn4.clicked.connect(self.button4Clicked)
btn5.clicked.connect(self.button5Clicked)
#.........这里部分代码省略.........
示例15: MainWindow
# 需要导入模块: from PyQt5.QtWidgets import QButtonGroup [as 别名]
# 或者: from PyQt5.QtWidgets.QButtonGroup import setExclusive [as 别名]
class MainWindow(QMainWindow):
InsertTextButton = 10
items = {-2: "source", -3: "channel", -4: "sink"}
def __init__(self):
import _diagramscene_rc
super(MainWindow, self).__init__()
self.config_manipulations = FlumeConfig(self)
properties_generator.dump_props()
self.create_actions()
self.create_menus()
self.create_tool_box()
self.clicked_button_id = 0
self.scene = DiagramScene(self.item_menu)
self.scene.setSceneRect(QRectF(0, 0, 5000, 5000))
self.scene.itemInserted.connect(self.item_inserted)
self.scene.textInserted.connect(self.text_inserted)
self.scene.itemSelected.connect(self.item_selected)
self.create_tool_bars()
# self.scene.enable_grid()
layout = QHBoxLayout()
layout.addWidget(self.tool_box)
self.view = QGraphicsView(self.scene)
self.view.centerOn(0, 0)
layout.addWidget(self.view)
self.widget = QWidget()
self.widget.setLayout(layout)
self.setCentralWidget(self.widget)
self.setWindowTitle("The Flume Illustrator")
# noinspection PyAttributeOutsideInit,PyArgumentList
def create_actions(self):
self.to_front_action = QAction(QIcon(':/images/bringtofront.png'),
"Bring to &Front", self, shortcut="Ctrl+F",
statusTip="Bring item to front", triggered=self.bring_to_front)
self.send_back_action = QAction(QIcon(':/images/sendtoback.png'),
"Send to &Back", self, shortcut="Ctrl+B",
statusTip="Send item to back", triggered=self.send_to_back)
self.bold_action = QAction(QIcon(':/images/bold.png'),
"Bold", self, checkable=True, shortcut="Ctrl+B",
triggered=self.handle_font_change)
self.italic_action = QAction(QIcon(':/images/italic.png'),
"Italic", self, checkable=True, shortcut="Ctrl+I",
triggered=self.handle_font_change)
self.underline_action = QAction(QIcon(':/images/underline.png'),
"Underline", self, checkable=True, shortcut="Ctrl+U",
triggered=self.handle_font_change)
self.delete_action = QAction(QIcon(':/images/delete.png'),
"Delete", self, shortcut="Delete", statusTip='Delete item from diagram',
triggered=self.delete_item)
self.exit_action = QAction("Exit", self, shortcut="Ctrl+X",
statusTip="Quit program", triggered=self.close)
self.about_action = QAction("About", self, shortcut="Ctrl+B",
triggered=self.about)
self.load_config_action = QAction("Load", self, shortcut="Ctrl+O",
statusTip="Load config file", triggered=self.config_manipulations.load_config)
self.enable_grid_action = QAction("Enable grid", self, checkable=True, triggered=self.enable_grid)
# noinspection PyAttributeOutsideInit
def create_menus(self):
self.file_menu = self.menuBar().addMenu("File")
self.file_menu.addAction(self.load_config_action)
self.file_menu.addAction(self.exit_action)
self.item_menu = self.menuBar().addMenu("Item")
self.item_menu.addAction(self.delete_action)
self.item_menu.addSeparator()
self.item_menu.addAction(self.to_front_action)
self.item_menu.addAction(self.send_back_action)
self.about_menu = self.menuBar().addMenu("Help")
self.about_menu.addAction(self.about_action)
# noinspection PyAttributeOutsideInit,PyUnresolvedReferences
def create_tool_box(self):
self.button_group = QButtonGroup()
self.button_group.setExclusive(False)
self.button_group.buttonClicked[int].connect(self.button_group_clicked)
layout = QGridLayout()
layout.addWidget(self.create_cell_widget("Source", "source"), 0, 0)
layout.addWidget(self.create_cell_widget("Channel", "channel"), 0, 1)
layout.addWidget(self.create_cell_widget("Sink", "sink"), 1, 0)
text_button = QToolButton()
text_button.setCheckable(True)
self.button_group.addButton(text_button, self.InsertTextButton)
text_button.setIcon(QIcon(QPixmap(':/images/textpointer.png').scaled(30, 30)))
#.........这里部分代码省略.........