Esempio n. 1
0
class QmyMainWindow(QMainWindow): 
   _tr = QCoreApplication.translate  #替代符

   def __init__(self, parent=None):
      super().__init__(parent)   #调用父类构造函数,创建窗体
      self.ui=Ui_MainWindow()    #创建UI对象
      self.ui.setupUi(self)      #构造UI界面

      text=self._tr("QmyMainWindow","文件名: ")
      self.ui.statusBar.showMessage(text)

      actionGroup= QActionGroup(self)
      actionGroup.addAction(self.ui.actLang_CN)
      actionGroup.addAction(self.ui.actLang_EN)
      actionGroup.setExclusive(True)

      self.__translator=None  #QTranslator对象

      self.setCentralWidget(self.ui.textEdit)

##  ============自定义功能函数================================
   def   setTranslator(self,translator,Language):
      self.__translator=translator
      if Language=="EN":
         self.ui.actLang_EN.setChecked(True)
      else:
         self.ui.actLang_CN.setChecked(True)
        
##  ===========由connectSlotsByName() 自动连接的槽函数=====================      
   @pyqtSlot()    ##英语界面
   def on_actLang_EN_triggered(self): 
      QCoreApplication.removeTranslator(self.__translator)  
      self.__translator=QTranslator()
      self.__translator.load("appLang_EN.qm")
      QCoreApplication.installTranslator(self.__translator)
      self.ui.retranslateUi(self)

      regSettings=QSettings(QCoreApplication.organizationName(),
                           QCoreApplication.applicationName()) 
      regSettings.setValue("Language","EN") #保存设置

   @pyqtSlot()    ##汉语界面
   def on_actLang_CN_triggered(self):  
      QCoreApplication.removeTranslator(self.__translator)  
      self.__translator=QTranslator()
      self.__translator.load("appLang_CN.qm")
      QCoreApplication.installTranslator(self.__translator)
      self.ui.retranslateUi(self)

      regSettings=QSettings(QCoreApplication.organizationName(),
                           QCoreApplication.applicationName())
      regSettings.setValue("Language","CN") #保存设置

   @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):   
      btnStyle=Qt.ToolButtonIconOnly
      if(checked):
         btnStyle=Qt.ToolButtonTextUnderIcon
      self.ui.mainToolBar.setToolButtonStyle(btnStyle)

   def on_actFile_New_triggered(self):     ##新建文件,不实现具体功能
      text=self._tr("QmyMainWindow","新建文件")
      self.ui.statusBar.showMessage(text)

   def on_actFile_Open_triggered(self):    ##打开文件,不实现具体功能
      text=self._tr("QmyMainWindow","打开的文件:")
      self.ui.statusBar.showMessage(text)
        
   def on_actFile_Save_triggered(self):    ##保存文件,不实现具体功能
      text=self._tr("QmyMainWindow","文件已保存")
      self.ui.statusBar.showMessage(text)