Python PyQt5

下载PyQt5

  • pip install PyQt5

下载designer

  • pip install PyQt5-tools

使用Qtdesigner

  • 将生产的ui文件转py文件,使用命令pyuic5 xx.ui -o xx.py
  • 此时只自动生成了ui界面的代码,需要自己写主程序调用你的界面类,并且需要自己编写界面的类并注册UI的类
  • from PyQt5 import uic
    • 使用uic的loadUi()方法读取designer设计的ui文件,就可以不必ui文件转py文件这一部。
  • 主程序入口:调用你的Qt窗口,然后show()出来,然后退出
if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = MyMainWindow()
    window.show()
    sys.exit(app.exec_())
  • 设计的主窗体类:
class MyMainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        uipath = os.path.join(os.path.dirname(__file__), 'window.ui')  # 获取designer的ui文件的路径拼接
        uic.loadUi(uipath, self)  # 读取designer设计的ui文件

布局

  • 绝对定位
    • obj.move()
  • 布局类
    • 表格布局QGridLayout

QtSql

  • 引入库
    • from PyQt5.QtSql import QSqlDatabase, QSqlQuery
  • 连接数据库
    • 创建数据库连接并打开
    • 这里是连接SqlServer的例子
    server = '100.88.16.2'
    dbname = '市本级'
    username = 'xx'
    password = 'xx'
    db = QSqlDatabase.addDatabase('QODBC')
    db.setDatabaseName(
                f'Driver={
         {Sql Server}};Server={server};Database={dbname};Uid={username};Pwd={password}'
            )  # f-String中如果有{dsfd}的正常字符串就再用一个{}来包裹
    db.open()
    
  • 执行sql语句
    query = QSqlQuery()
    query.exec("Select name From sys.databases")
    
    query = QSqlQueryModel()
    query.setQuery("xxxxx")
    
    # 上述两种方式都可以执行sql语句,不过最好分开执行,一次执行多条sql语句会出错
    
  • 获取查询结果
    • 使用QSqlQueryModel对象的属性与方法来获取结果集
    model.columnCount() # 获取总列数
    model.rowCount() # 获取总行数
    model.index(x,y) # 获取一个结果集的位置索引对象,只是一个索引对象,还不是数据
    model.data(indexObj)  # 根据索引对象来取得数据,这里的索引对象就是上面的结果
    
    • model对象不会一次获取所有数据
    while model.canFetchMore():  # model不会一次读取所有,需要获取到所有记录
        model.fetchMore()  # 获取多一点的记录
    
  • 关联tableView控件
    • 需要先建立model对象,再将tableView与model相关联起来
    from PyQt5.QtSql import QSqlDatabase, QSqlQuery, QSqlQueryModel
    # 先建立跟tableView关联的模型类,该类执行sql语句
    qqm = QSqlQueryModel()    
    qqm.setQuery('select * from alltables'# 在窗体主类的tableView对象中设置该model,使用setModel方法 
    self.tableView_3.setModel(qqm)  # tableView设置了setModel后控件自动渲染结果
    

QtSql数据源切换remove问题

  • 在切换数据源时需要执行removeDatabase方法,该方法如果要正常运行,需要关闭与该数据库相关的所有对象
    def DisConnectDb(self):
            self.tableView.setModel(None)
            if hasattr(self, 'model'):
                if self.model:
                    self
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值