Exemplo n.º 1
0
    def _create_fontcombobox(self, name):
        """Return a combobox for modifying a multiple-getValue setting."""
        setting = self.settingItems[name]
        # Create the combobox and populate it
        combo = QFontComboBox()
        combo.setMinimumWidth(100)
        combo.setMaximumWidth(150)
        combo.setFontFilters(QFontComboBox.AllFonts)  # 设置过滤器

        # Ugly event handler!
        def combo_changed(index):
            self._changedSettings[name] = combo.currentFont().family()

        combo.currentFontChanged.connect(combo_changed)

        # Set the initial getValue, if any
        def combo_update(value):
            combo.setCurrentFont(QFont(value))

        self._updateActions[name] = combo_update
        # combo_update(self.currentSettings.get(name, list(SettingEnums.enums[valuetype].values())[0]))
        return combo
Exemplo n.º 2
0
class QmyMainWindow(QMainWindow):
	def __init__(self,parent=None):
		super().__init__(parent)#调用父类构造函数,创建窗体
		self.ui = Ui_MainWindow()#创建Ui对象
		self.ui.setupUi(self)#构造UI

		self.__buildUI()
		self.__spinFontSize.valueChanged[int].connect(self.do_fontSize_Changed)
		self.__comboFontName.currentIndexChanged[str].connect(self.do_fontName_Changed)
		self.setCentralWidget(self.ui.textEdit)
	##==========自定义功能函数==========
	def __buildUI(self):
		self.__LabFile = QLabel(self)#QLabel组件显示信息
		self.__LabFile.setMinimumWidth(150)
		self.__LabFile.setText('文件名: ')
		self.ui.statusBar.addWidget(self.__LabFile)#添加到状态栏

		self.__progressBar1 = QProgressBar(self)#实例进度条
		self.__progressBar1.setMaximumWidth(200)#设定最大宽度
		self.__progressBar1.setMinimum(5)#设置最小值
		self.__progressBar1.setMaximum(50)#设置最大值
		sz = self.ui.textEdit.font().pointSize()
		print(sz)
		self.__progressBar1.setValue(sz)
		self.ui.statusBar.addWidget(self.__progressBar1)

		self.__LabInfo = QLabel(self)
		self.__LabInfo.setText('选择字体名称: ')
		self.ui.statusBar.addPermanentWidget(self.__LabInfo)

		actionGroup = QActionGroup(self)#定义一个组
		actionGroup.addAction(self.ui.actLang_CN)#添加两个组件到一个组内
		actionGroup.addAction(self.ui.actLang_EN)
		actionGroup.setExclusive(True)#令组内组件互斥
		self.ui.actLang_CN.setChecked(True)#设定中文按钮为默认

		self.__spinFontSize = QSpinBox(self)#设定QSpinBox组件控制字体大小
		self.__spinFontSize.setMaximum(50)#最大字体50
		self.__spinFontSize.setMinimum(5)#最小字体5
		sz = self.ui.textEdit.font().pointSize()
		self.__spinFontSize.setValue(sz)
		self.__spinFontSize.setMinimumWidth(50)
		self.ui.mainToolBar.addWidget(self.__spinFontSize)

		self.__comboFontName = QFontComboBox(self)
		self.__comboFontName.setMinimumWidth(100)
		self.ui.mainToolBar.addWidget(self.__comboFontName)

		self.ui.mainToolBar.addSeparator()
		self.ui.mainToolBar.addAction(self.ui.actClose)
	##==========事件处理函数===========

	##==========由connectSlotsByName()自动关联的槽函数====
	@pyqtSlot(bool)
	def on_actFont_Bold_triggered(self,checked):
		fmt = self.ui.textEdit.currentCharFormat()
		print(fmt.fontWeight())
		# print(fmt,dir(fmt))
		# print(checked)
		if (checked==True):
			# print(QFont.setItalic())
			fmt.setFontWeight(QFont.Bold)
			print(fmt.fontWeight())
		else:
			fmt.setFontWeight(QFont.Normal)
			print(fmt.fontWeight())
		self.ui.textEdit.mergeCurrentCharFormat(fmt)
		# fmt.setFontBold(checked)
		# self.ui.textEdit.currentCharFormat(fmt)

	@pyqtSlot(bool)
	def on_actFont_Italic_triggered(self,checked):
		fmt = self.ui.textEdit.currentCharFormat()
		fmt.setFontItalic(checked)
		self.ui.textEdit.mergeCurrentCharFormat(fmt)

	@pyqtSlot(bool)
	def on_actFont_UnderLine_triggered(self,checked):
		fmt = self.ui.textEdit.currentCharFormat()
		fmt.setFontUnderline(checked)
		self.ui.textEdit.mergeCurrentCharFormat(fmt)

	def on_textEdit_copyAvailable(self,avi):
		self.ui.actEdit_Cut.setEnabled(avi)
		self.ui.actEdit_Copy.setEnabled(avi)
		self.ui.actEdit_Paste.setEnabled(self.ui.textEdit.canPaste())

	def on_textEdit_selectionChanged(self):
		fmt = self.ui.textEdit.currentCharFormat()
		self.ui.actFont_Bold.setEnabled(fmt.font().bold())
		self.ui.actFont_Italic.setEnabled(fmt.fontItalic())
		self.ui.actFont_UnderLine.setEnabled(fmt.fontUnderline())

	def on_textEdit_custonContextMenuRequested(self,pos):
		popMenu = self.ui.textEdit.createStandardContextMenu()
		popMenu.exec(pos)
	##=========自定义槽函数============
	@pyqtSlot(int)
	def do_fontSize_Changed(self,fontSize):
		fmt = self.ui.textEdit.currentCharFormat()
		fmt.setFontPointSize(fontSize)
		self.ui.textEdit.mergeCurrentCharFormat(fmt)
		self.__progressBar1.setValue(fontSize)

	@pyqtSlot(str)
	def do_fontName_Changed(self,fontName):
		fmt = self.ui.textEdit.currentCharFormat()
		fmt.setFontFamily(fontName)
		self.ui.textEdit.mergeCurrentCharFormat(fmt)
		self.__LabInfo.setText("字体名称: {}".format(fontName))
Exemplo n.º 3
0
class QmyMainWindow(QMainWindow):
    def __init__(self, parent=None):
        super().__init__(parent)  #调用父类构造函数,创建窗体
        self.ui = Ui_MainWindow()  #创建UI对象
        self.ui.setupUi(self)  #构造UI界面

        self.__buildUI()  #动态创建组件,添加到工具栏和状态栏
        self.__spinFontSize.valueChanged[int].connect(
            self.do_fontSize_Changed)  #字体大小设置
        self.__comboFontName.currentIndexChanged[str].connect(
            self.do_fontName_Changed)  #字体选择

        self.setCentralWidget(self.ui.textEdit)

##  ============自定义功能函数================================

    def __buildUI(self):  ##窗体上动态添加组件
        # 创建状态栏上的组件
        self.__LabFile = QLabel(self)  # QLabel组件显示信息
        self.__LabFile.setMinimumWidth(150)
        self.__LabFile.setText("文件名: ")
        self.ui.statusBar.addWidget(self.__LabFile)

        self.__progressBar1 = QProgressBar(self)  # progressBar1
        self.__progressBar1.setMaximumWidth(200)
        self.__progressBar1.setMinimum(5)
        self.__progressBar1.setMaximum(50)
        sz = self.ui.textEdit.font().pointSize()  #字体大小
        self.__progressBar1.setValue(sz)
        self.ui.statusBar.addWidget(self.__progressBar1)

        self.__LabInfo = QLabel(self)  # QLabel组件显示字体名称
        self.__LabInfo.setText("选择字体名称: ")
        self.ui.statusBar.addPermanentWidget(self.__LabInfo)

        #为actLang_CN和actLang_EN创建QActionGroup,互斥型选择
        actionGroup = QActionGroup(self)
        actionGroup.addAction(self.ui.actLang_CN)
        actionGroup.addAction(self.ui.actLang_EN)
        actionGroup.setExclusive(True)  #互斥型分组
        self.ui.actLang_CN.setChecked(True)

        #创建工具栏上的组件
        self.__spinFontSize = QSpinBox(self)  #字体大小spinbox
        self.__spinFontSize.setMinimum(5)
        self.__spinFontSize.setMaximum(50)
        sz = self.ui.textEdit.font().pointSize()
        self.__spinFontSize.setValue(sz)
        self.__spinFontSize.setMinimumWidth(50)
        self.ui.mainToolBar.addWidget(self.__spinFontSize)  #SpinBox添加到工具栏

        self.__comboFontName = QFontComboBox(self)  #字体 combobox
        self.__comboFontName.setMinimumWidth(100)
        self.ui.mainToolBar.addWidget(self.__comboFontName)

        self.ui.mainToolBar.addSeparator()  #添加一个分隔条
        self.ui.mainToolBar.addAction(self.ui.actClose)  #添加 actClose作为“关闭”按钮

##  ===========由connectSlotsByName() 自动连接的槽函数=====================

    @pyqtSlot(bool)  ##设置粗体
    def on_actFont_Bold_triggered(self, checked):
        fmt = self.ui.textEdit.currentCharFormat()
        if (checked == True):
            fmt.setFontWeight(QFont.Bold)
        else:
            fmt.setFontWeight(QFont.Normal)
        self.ui.textEdit.mergeCurrentCharFormat(fmt)

    @pyqtSlot(bool)  ##设置斜体
    def on_actFont_Italic_triggered(self, checked):
        fmt = self.ui.textEdit.currentCharFormat()
        fmt.setFontItalic(checked)
        self.ui.textEdit.mergeCurrentCharFormat(fmt)

    @pyqtSlot(bool)  ##设置下划线
    def on_actFont_UnderLine_triggered(self, checked):
        fmt = self.ui.textEdit.currentCharFormat()
        fmt.setFontUnderline(checked)
        self.ui.textEdit.mergeCurrentCharFormat(fmt)

    def on_textEdit_copyAvailable(self, avi):  ##文本框内容可copy
        self.ui.actEdit_Cut.setEnabled(avi)
        self.ui.actEdit_Copy.setEnabled(avi)
        self.ui.actEdit_Paste.setEnabled(self.ui.textEdit.canPaste())

    def on_textEdit_selectionChanged(self):  ##文本选择内容发生变化
        fmt = self.ui.textEdit.currentCharFormat()
        self.ui.actFont_Bold.setChecked(fmt.font().bold())
        self.ui.actFont_Italic.setChecked(fmt.fontItalic())
        self.ui.actFont_UnderLine.setChecked(fmt.fontUnderline())

    def on_textEdit_customContextMenuRequested(self, pos):  ##标准右键菜单
        popMenu = self.ui.textEdit.createStandardContextMenu()
        popMenu.exec(pos)  #显示快捷菜单

    @pyqtSlot(bool)  ##设置工具栏按钮样式
    def on_actSys_ToggleText_triggered(self, checked):
        if (checked):
            st = Qt.ToolButtonTextUnderIcon
        else:
            st = Qt.ToolButtonIconOnly
        self.ui.mainToolBar.setToolButtonStyle(st)

    def on_actFile_New_triggered(self):  ##新建文件,不实现具体功能
        self.__LabFile.setText(" 新建文件 ")

    def on_actFile_Open_triggered(self):  ##打开文件,不实现具体功能
        self.__LabFile.setText(" 打开的文件 ")

    def on_actFile_Save_triggered(self):  ##保存文件,不实现具体功能
        self.__LabFile.setText(" 文件已保存 ")

##  =============自定义槽函数===============================

    @pyqtSlot(int)  ##设置字体大小,关联 __spinFontSize
    def do_fontSize_Changed(self, fontSize):
        fmt = self.ui.textEdit.currentCharFormat()
        fmt.setFontPointSize(fontSize)
        self.ui.textEdit.mergeCurrentCharFormat(fmt)
        self.__progressBar1.setValue(fontSize)  #注意它属于self, 而不是self.ui

    @pyqtSlot(str)  ## 选择字体名称,关联__comboFontName
    def do_fontName_Changed(self, fontName):
        fmt = self.ui.textEdit.currentCharFormat()
        fmt.setFontFamily(fontName)
        self.ui.textEdit.mergeCurrentCharFormat(fmt)
        self.__LabInfo.setText("字体名称:%s   " % fontName)
Exemplo n.º 4
0
class QmyMainWindow(QMainWindow):
    def __init__(self, parent=None, flags=Qt.WindowFlags()):
        super().__init__(parent=parent, flags=flags)
        self._ui = Ui_MainWindow()
        self._ui.setupUi(self)

        self._buildUi()  # 动态创建组件,添加到工具栏和状态栏
        self._spinFontSize.valueChanged[int].connect(
            self.my_fontSize_Changed)  # 字体大小设置
        self._comboFontName.currentIndexChanged[str].connect(
            self.my_fontName_Changed)  #字体选择
        self.setCentralWidget(self._ui.plainTextEdit)  # 将文本框防止中央

    def _buildUi(self):
        # QLable显示信息
        self._LabFile = QLabel(self)
        self._LabFile.setMinimumWidth(150)
        self._LabFile.setText('文件名:')
        self._ui.statusBar.addWidget(self._LabFile)  # 添加到状态栏

        # progressBar显示
        self._progressBar1 = QProgressBar(self)
        self._progressBar1.setMaximumWidth(200)
        self._progressBar1.setMinimum(5)
        self._progressBar1.setMaximum(50)
        sz = self._ui.plainTextEdit.font().pointSize()
        self._progressBar1.setValue(sz)  # 将字体大小显示在progressBar
        self._ui.statusBar.addWidget(self._progressBar1)  # 添加到状态栏

        self._LabInfo = QLabel(self)
        self._LabInfo.setText('选择字体名称:{黑体}')
        self._ui.statusBar.addPermanentWidget(self._LabInfo)

        actionGroup = QActionGroup(self)
        actionGroup.addAction(self._ui.action_English)
        actionGroup.addAction(self._ui.action_Chinese)
        actionGroup.setExclusive(True)
        self._ui.action_Chinese.setChecked(True)

        self._spinFontSize = QSpinBox(self)
        self._spinFontSize.setMinimum(5)
        self._spinFontSize.setMaximum(50)
        sz = self._ui.plainTextEdit.font().pointSize()
        self._spinFontSize.setValue(sz)
        self._spinFontSize.setMinimumWidth(50)
        self._ui.toolBar.addWidget(self._spinFontSize)

        self._comboFontName = QFontComboBox(self)
        self._comboFontName.setMinimumWidth(100)
        self._ui.toolBar.addWidget(self._comboFontName)

        self._ui.toolBar.addSeparator()
        self._ui.toolBar.addAction(self._ui.action_Close)

    @pyqtSlot(int)
    def my_fontSize_Changed(self, fontsize):
        fmt = self._ui.plainTextEdit.currentCharFormat()
        fmt.setFontPointSize(fontsize)
        self._ui.plainTextEdit.mergeCurrentCharFormat(fmt)
        self._progressBar1.setValue(fontsize)

    @pyqtSlot(str)
    def my_fontName_Changed(self, fontName):
        fmt = self._ui.plainTextEdit.currentCharFormat()
        fmt.setFontFamily(fontName)
        self._ui.plainTextEdit.mergeCurrentCharFormat(fmt)
        self._LabInfo.setText(f'字体名称:{fontName}')

    @pyqtSlot(bool)
    def on_action_Bold_triggered(self, checked):
        fmt = self._ui.plainTextEdit.currentCharFormat()
        if checked:
            fmt.setFontWeight(QFont.Bold)
        else:
            fmt.setFontWeight(QFont.Normal)
        self._ui.plainTextEdit.mergeCurrentCharFormat(fmt)

    @pyqtSlot(bool)
    def on_action_Italic_triggered(self, checked):
        fmt = self._ui.plainTextEdit.currentCharFormat()
        fmt.setFontItalic(checked)
        self._ui.plainTextEdit.mergeCurrentCharFormat(fmt)

    @pyqtSlot(bool)
    def on_action_UnderLine_triggered(self, checked):
        fmt = self._ui.plainTextEdit.currentCharFormat()
        fmt.setFontUnderline(checked)
        self._ui.plainTextEdit.mergeCurrentCharFormat(fmt)

    def on_plainTextEdit_copyAvailable(self, avi):
        self._ui.action_Copy.setEnabled(avi)
        self._ui.action_Cut.setEnabled(avi)
        self._ui.action_Paste.setEnabled(self._ui.plainTextEdit.canPaste())

    def on_plainTextEdit_selectionChanged(self):
        fmt = self._ui.plainTextEdit.currentCharFormat()
        self._ui.action_Bold.setChecked(fmt.font().bold())
        self._ui.action_Italic.setChecked(fmt.fontItalic())
        self._ui.action_UnderLine.setChecked(fmt.fontUnderline())

    def on_plainTextEdit_customeContexMenuRequested(self, pos):
        popMenu = self._ui.plainTextEdit.createStandardContextMenu()
        popMenu.exec(pos)

    @pyqtSlot(bool)
    def on_action_Text_triggered(self, checked):
        if checked:
            st = Qt.ToolButtonTextUnderIcon
        else:
            st = Qt.ToolButtonIconOnly
        self._ui.toolBar.setToolButtonStyle(st)

    def on_action_New_triggered(self):
        self._LabFile.setText('新建文件')

    def on_action_Open_triggered(self):
        self._LabFile.setText('打开文件')

    def on_action_Save_triggered(self):
        self._LabFile.setText('文件已保存')