PyQt5 界面设计和业务处理分离

打开designer在界面上放置了一些控件,保存界面为mainUi.ui,将mainwin.ui转换为Ui_mainwin.py
 

pyuic5 -o  mainwin.ui  ui_mainwin.py

ui_mainwin.py代码都是自动生成的,大家可以不需要动,在生成的文件中有一个Ui_MainWindow类。
新的py文件main.py,代码如下:
#coding = utf-8

import sys
from PyQt5.QtWidgets  import QApplication, QMainWindow, QFileDialog
from Ui_login  import Ui_MainWindow

class  MyWin( QMainWindowUi_MainWindow):
     '''
    从QMainWindow, Ui_MainWindow继承,实现界面设计和业务实现的解耦
    '''
     def  __init__( selfparent= None):
         super(MyWin,  self). __init__(parent)
         self.setupUi( self)
         self.__setting()
    
     def  __setting( self):
         '''
        增加自定义配置
        '''
         self.setWindowTitle( "远程维护工具")
         self.resize( 800550)
         self.splitter.setStretchFactor( 01)
         self.splitter.setStretchFactor( 13)
         self.splitter.setStretchFactor( 22)
         self.splitter.setMaximumWidth( 1500)

         #增加信号处理
         self.pushButton.clicked.connect( self.slot1)
         self.actionClose.triggered.connect( self.close)
         self.actionOpen.triggered.connect( self.on_open)
         self.actionSave.triggered.connect( self.on_save)

     #自定义信号处理函数
     def  slot1( self):
         print( "点击。。。")


     def  on_save( self):
        FullFileName, _ = QFileDialog.getSaveFileName( self'文件另存为'r './''TXT (*.txt)')
        set_text =  self.txt_view.toPlainText()
         with  open(FullFileName,  'wt'as f:
             print(set_text,  file=f)


     def  on_open( self):
        txtstr =  ""
        FullFileName, _ = QFileDialog.getOpenFileName( self'打开'r './''TXT (*.txt)')
         with  open(FullFileName,  'rt'as f:
            lines = f.readlines()
             for line  in lines:
                txtstr = txtstr+line
                 self.txt_view.setText(txtstr)

if  __name__ ==  "__main__":
    app = QApplication(sys.argv)
    w = MyWin()
    w.show()
    sys.exit(app.exec_())

 

你可能感兴趣的:(PyQt5 界面设计和业务处理分离)