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(QMainWindow, Ui_MainWindow):
'''
从QMainWindow, Ui_MainWindow继承,实现界面设计和业务实现的解耦
'''
def __init__(self, parent=None):
super(MyWin, self).__init__(parent)
self.setupUi(self)
self.__setting()
def __setting(self):
'''
增加自定义配置
'''
self.setWindowTitle("远程维护工具")
self.resize(800, 550)
self.splitter.setStretchFactor(0, 1)
self.splitter.setStretchFactor(1, 3)
self.splitter.setStretchFactor(2, 2)
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_())