PyQt/partner_625781186/1.exec动态生成控件/1.动态生成.py

55 lines
No EOL
1.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
@resource:none
@description: 1. exec()执行动态生成控件 //关闭程序时把model类型保存到ini文件中,打开时生成model对象.
@Created on 2018年3月17日
@email: 625781186@qq.com
'''
from PyQt5 import QtGui, QtWidgets, QtCore
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import pyqtSlot
from PyQt5.QtWidgets import QDialog
from PyQt5.QtSql import *
import re
from Ui_getModel import Ui_Dialog
class Dialog(QDialog, Ui_Dialog):
"""
Class documentation goes here.
"""
def __init__(self, parent=None):
super(Dialog, self).__init__(parent)
self.setupUi(self)
self.setting=QSettings('./setting.ini', QSettings.IniFormat)
self.getModel()
self.tableView.setModel(self.qmodel)
print('1:', self.tableView.model())
def closeEvent(self, e):
text=re.split('\.| ', str(self.tableView.model()))
if text != ['None']:
i=[i for i, x in enumerate(text) if x.find('Model')!=-1]
# print(text[i[-1]])
self.setting.setValue("Model/model",text[i[-1]]+'()');#设置key和value也就是参数和值
def getModel(self):
if(self.setting.contains("Model/model")): #此节点是否存在该数据
model = self.setting.value("Model/model")
exec('''self.qmodel=%s'''%(model))#python exec()执行字符串命令
print('2:', self.qmodel)
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
ui = Dialog()
ui.show()
sys.exit(app.exec_())