zoukankan      html  css  js  c++  java
  • 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_())
  • 相关阅读:
    Jquery与mootools对比
    Maven + Eclipse + Tomcat
    一位老工程师前辈的忠告 (转载)
    如何利用JConsole观察分析JAVA程序的运行
    程序员该怎样放松?8个好网站推荐(转载)
    [转]关于程序员的59条搞笑但却真实无比的编程语录
    关于程序员的59条搞笑但却真实无比的编程语录
    [原]AppPoolService-IIS应用程序池辅助类(C#控制应用程序池操作)
    AppPoolService-IIS应用程序池辅助类(C#控制应用程序池操作)
    [译]C#控制管理VisualSVN Server
  • 原文地址:https://www.cnblogs.com/bongem/p/11813877.html
Copyright © 2011-2022 走看看