【pyqt5学习】——tablewidget控件学习

目录

1、Table Widget

1.QTableWidget不能在mainwindow中随主窗口的大小变化?

2.将表格变为禁止编辑:

3.设置表格为整行选择

4.单个选中和多个选中的设置:

5.表格表头的显示与隐藏

6.对表头文字的字体、颜色进行设置

7.在单元格里加入控件:

8.单元格中添加图片:

9设置单元格字体颜色、背景颜色和字体字符:

10.设置单元格内文字的对齐方式

11.合并单元格:

12.设置单元格的大小

13.获得单击单元格的内容

14.QTableWidget要调整表格行宽主要涉及以下函数

15.添加表头内容:

2、Table View

可用的模式有以下几个

3、Table View与Widget的区别

在PyQt5上基于纯代码创建的表格TableWidget:


PyQt5中有两种创建表格的控件:Table View和Table Widget。

1、Table Widget


QTableWidget是QT程序中常用的显示数据表格的空间,很类似于VC、C#中的DataGrid。
pyqt5的tablewidget组件比较特殊,每个方格可以装载其他组件来搭配实现不同的效果,所以在qtdesigner上找不到可视化直接设置mask或者其他可以限制填入单元格的设置。

self.MyTable = QTableWidget(4,3) #创建表格
self.MyTable.setHorizontalHeaderLabels([‘姓名’,’身高’,’体重’]) #设置表头
参考资料:
[1] pyqt中tablewidget的使用 https://blog.csdn.net/yafwang/article/details/52754217
[2] 朝闻道 的《QTableWidget的用法总结》 https://www.cnblogs.com/findumars/p/5553367.html
[3] pyqt5 tablewidget 单元格设置正则表达式 https://blog.csdn.net/qq965194745/article/details/78910469
[4] Pyqt5系列(十)-QtWidget的使用 https://blog.csdn.net/zhulove86/article/details/52599738

1.QTableWidget不能在mainwindow中随主窗口的大小变化?


解决:在表格外部添加布局。
代码:tableWidget = new QTableWidget;

2.将表格变为禁止编辑:

tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);

3.设置表格为整行选择

tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows); //整行选中的方式

4.单个选中和多个选中的设置:

tableWidget->setSelectionMode(QAbstractItemView::ExtendedSelection); //设置为可以选中多个目标
QAbstractItemView.ExtendedSelection/QAbstractItemView.ContiguousSelection 的区别不明显,主要功能是正常情况下是单选,但按下Ctrl或Shift键后,可以多选)

5.表格表头的显示与隐藏

对于水平或垂直方法的表头,可以用以下方式进行 隐藏/显示 的设置:
tableWidget.verticalHeader().setVisible(false); //隐藏列表头
tableWidget.horizontalHeader().setVisible(false); //隐藏行表头

6.对表头文字的字体、颜色进行设置

QTableWidgetItem *columnHeaderItem0 = tableWidget->horizontalHeaderItem(0); //获得水平方向表头的Item对象
columnHeaderItem0->setFont(QFont(“Helvetica”)); //设置字体
columnHeaderItem0->setBackgroundColor(QColor(0,60,10)); //设置单元格背景颜色
columnHeaderItem0->setTextColor(QColor(200,111,30)); //设置文字颜色

7.在单元格里加入控件:

QComboBox *comBox = new QComboBox();
comBox->addItem(“Y”);
comBox->addItem(“N”);
tableWidget->setCellWidget(0,2,comBox);

8.单元格中添加图片:

tableWidget->setItem(row, 0, new QTableWidgetItem(QIcon(“:/new/images/kingdemo.ico”),tr(“”)));

9设置单元格字体颜色、背景颜色和字体字符:


QTableWidgetItem *item = new QTableWidgetItem(“Apple”);
item->setBackgroundColor(QColor(0,60,10));
item->setTextColor(QColor(200,111,100));
item->setFont(QFont(“Helvetica”));
tableWidget->setItem(0,3,item);
另:如果需要对所有的单元格都使用这种字体,则可以使用 tableWidget->setFont(QFont(“Helvetica”));


10.设置单元格内文字的对齐方式

水平对齐方式有:
Constant Value Description
Qt.AlignLeft 0x0001 Aligns with the left edge.
Qt.AlignRight 0x0002 Aligns with the right edge.
Qt.AlignHCenter 0x0004 Centers horizontally in the available space.
Qt.AlignJustify 0x0008 Justifies the text in the available space.
垂直对齐方式:
Constant Value Description
Qt.AlignTop 0x0020 Aligns with the top.
Qt.AlignBottom 0x0040 Aligns with the bottom.
Qt.AlignVCenter 0x0080 Centers vertically in the available space.
如果两种都要设置,只要用 Qt.AlignHCenter | Qt.AlignVCenter 的方式即可


11.合并单元格:


tableWidget->setSpan(0, 0, 3, 1) # 其参数为: 要改变单元格的1行数、2列数,要合并的3行数、4列数


12.设置单元格的大小

首先,可以指定某个行或者列的大小
tableWidget->setColumnWidth(3,200);
tableWidget->setRowHeight(3,60);
还可以将行和列的大小设为与内容相匹配
tableWidget->resizeColumnsToContents();
tableWidget->resizeRowsToContents();


13.获得单击单元格的内容

通过实现 itemClicked (QTableWidgetItem *) 信号的槽函数,就可以获得鼠标单击到的单元格指针,进而获得其中的文字信息
connect(tableWidget,SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)),this,SLOT(getItem(QTreeWidgetItem*,int)));
//将itemClicked信号与函数getItem绑定


14.QTableWidget要调整表格行宽主要涉及以下函数


tableWidget->horizontalHeader()->setResizeMode(QHeaderView::Stretch);//使列完全填充并平分
tableWidget->verticalHeader()->setResizeMode(QHeaderView::Stretch);//行自适应宽度
tableWidget->resizeColumnsToContents(); //根据内容调整列宽
tableWidget->resizeColumnToContents(int col);//根据内容自动调整给定列宽
tableWidget->horizontalHeader()->setResizeMode//把给定列设置为给定模式
主要模式有Stretch和Fixed


15.添加表头内容:


方法一:
QStringList header;
header<<”“<

2、Table View


qtableview这个控件可以绑定一个模型数据用来更新控件上的内容


可用的模式有以下几个


// QStringListModel 存储一组字符串
// QStandardItemModel 存储任意层次结构的数据
// QDirModel 对文件系统进行封装
// QSqlQueryModel 对SQL的查询结果集进行封装
// QSqlTableModel 对SQL中的table进行封装
// QSqlRelationalTableModel 对带有foreign key的SQL table进行封装
// QSortFilterProxyModel 对另一个model执行sort and/or filter
可参考资料:https://www.zhaokeli.com/article/7986.html

3、Table View与Widget的区别


QTableWidget是QTableView的子类,主要区别是QTableView可以使用自定义的数据模型来显示内容(也就是先要通过setModel来绑定数据源),而QTableWidget则只能使用标准的数据模型,并且其单元格数据是QTableWidgetItem的对象来实现的(也就是不需要数据源,将逐个单元格内的信息填好即可)。这主要体现在QTableView类中有setModel成员函数,而到了QTableWidget类中,该成员函数变成了私有。使用QTableWidget就离不开QTableWidgetItem。QTableWidgetItem用来表示表格中的一个单元格,正个表格都需要用逐个单元格构建起来。

QTableWidget:只能使用标准模式;
QTableView:可以使用自定义模式。

在PyQt5上基于纯代码创建的表格TableWidget:


下面代码有部分函数有问题,主要是PyQt4与PyQt5的属性和方法差异导致。

#-*-coding:utf-8-*-from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
import sys
import time#基于Table Widget控件的表格
class MyTable(QTableWidget):def __init__(self,parent=None):super(MyTable,self).__init__(parent)self.setWindowTitle("第一个表格创建实验")self.setWindowIcon(QIcon("a1.png"))self.resize(800,500)  #设置表格尺寸#===1:创建初始表格self.setColumnCount(5)self.setRowCount(5)#self.setShowGrid(False) #是否需要显示网格self.settableHeader()self.inputcelldata()self.settableSelectMode()#self.settableHeaderFontColor()#self.setCellFontColor()# self.setCellAlign()# self.setCellFontSize()# self.setCellFontColor()#self.setCellSpan()self.addRowColumn()# layout = QHBoxLayout()# layout.addWidget(MyTable)# self.setLayout(layout)#===1:设置表格单元格尺寸def settableSize(self):"""首先,可以指定某个行或者列的大小self.MyTable.setColumnWidth(2,50)  #将第2列的单元格,设置成50宽度self.MyTable.setRowHeight(2,60)      #将第2行的单元格,设置成60的高度还可以将行和列的大小设为与内容相匹配self.MyTable.resizeColumnsToContents()   #将列调整到跟内容大小相匹配self.MyTable.resizeRowsToContents()      #将行大小调整到跟内容的大学相匹配:return:"""self.setColumnWidth(0,50)self.setColumnWidth(3, 50)#self.setRowHeight(0,500)#1.2 设置表格的行和列的大小与输入内容相匹配self.resizeColumnsToContents()self.resizeRowsToContents()#===2:设置表格的表头名称def settableHeader(self):#columnname = ['A','B','C','D','E']columnname = ['姓名', '性别', '年龄', '身高', '照片']#rowname = ['a','b','c','d','e']self.setHorizontalHeaderLabels(columnname)#self.setVerticalHeaderLabels(rowname)#===3:给表格输入初始化数据def settableInitData(self):for i in range(5):for j in range(5):#1)直接在表格中添加数据self.setItem(i,j,QTableWidgetItem(str(i)+str(j)))#2)在表格的单元格中加入控件comBox = QComboBox()comBox.addItem("男")comBox.addItem("女")self.setCellWidget(i,j,comBox)def inputcelldata(self): #输入数据self.setItem(0,0,QTableWidgetItem("张三"))#self.setItem(0,1,"男")comBox = QComboBox()comBox.addItem("男")comBox.addItem("女")self.setCellWidget(0, 1, comBox)self.setItem(0,2,QTableWidgetItem(str(25)))self.setItem(0,3,QTableWidgetItem(str(160.85)))"""在单元格里加入控件QComboBox"""def addwidgettocell(self):comBox = QComboBox()comBox.addItem("男")comBox.addItem("女")self.setCellWidget(0, 1, comBox)#===4:表格的其他相关属性设置"""设置表格是否可编辑"""def settableEditTrigger(self):"""使用格式说明:在默认情况下,表格里的字符是可以更改的,比如双击一个单元格,就可以修改原来的内容,如果想禁止用户的这种操作,让这个表格对用户只读,可以这样:QAbstractItemView.NoEditTriggers和QAbstractItemView.EditTrigger枚举中的一个,都是触发修改单元格内容的条件:QAbstractItemView.NoEditTriggers    0   No editing possible. 不能对表格内容进行修改QAbstractItemView.CurrentChanged    1   Editing start whenever current item changes.任何时候都能对单元格修改QAbstractItemView.DoubleClicked     2   Editing starts when an item is double clicked.双击单元格QAbstractItemView.SelectedClicked   4   Editing starts when clicking on an already selected item.单击已选中的内容QAbstractItemView.EditKeyPressed    8   Editing starts when the platform edit key has been pressed over an item.QAbstractItemView.AnyKeyPressed     16  Editing starts when any key is pressed over an item.按下任意键就能修改QAbstractItemView.AllEditTriggers   31  Editing starts for all above actions.以上条件全包括"""self.setEditTriggers(QAbstractItemView.NoEditTriggers)"""设置表格为整行选择"""def settableSelect(self):"""QAbstractItemView.SelectionBehavior枚举还有如下类型Constant                      Value        DescriptionQAbstractItemView.SelectItems   0   Selecting single items.选中单个单元格QAbstractItemView.SelectRows    1   Selecting only rows.选中一行QAbstractItemView.SelectColumns 2   Selecting only columns.选中一列"""self.setSelectionBehavior(QAbstractItemView.SelectRows)"""单个选中和多个选中的设置"""def settableSelectMode(self):"""setSelectionMode(QAbstractItemView.ExtendedSelection)  #设置为可以选中多个目标该函数的参数还可以是:QAbstractItemView.NoSelection      不能选择QAbstractItemView.SingleSelection  选中单个目标QAbstractItemView.MultiSelection    选中多个目标QAbstractItemView.ExtendedSelection和ContiguousSelection的区别不明显,要功能是正常情况下是单选,但按下Ctrl或Shift键后,可以多选:return:"""self.setSelectionMode(QAbstractItemView.ExtendedSelection)"""表头显示与隐藏"""def settableHeaderVisible(self):"""对于水平或垂直方法的表头,可以用以下方式进行 隐藏/显示 的设置:self.MyTable.verticalHeader().setVisible(False)self.MyTable.horizontalHeader().setVisible(False)"""# 4.3 隐藏表头self.verticalHeader().setVisible(False)self.horizontalHeader().setVisible(False)"""对表头文字的字体、颜色进行设置"""def settableHeaderFontColor(self):"""PyQt5中没有如下设置背景颜色和字体颜色函数headItem.setBackgroundColor(QColor(c))  # 设置单元格背景颜色headItem.setTextColor(QColor(200, 111, 30))  # 设置文字颜色:return:有(设置字体颜色):headItem.setForeground(QBrush(Qt.red))headItem.setForeground(QBrush(QColor(128,255,0)))"""f, ok = QFontDialog.getFont()for x in range(self.columnCount()):headItem = self.horizontalHeaderItem(x)  # 获得水平方向表头的Item对象#headItem.setFont(QFont("song",12,QFont.Bold))if ok:headItem.setFont(f)  # 设置字体#设置表头字体颜色#headItem.setForeground(QBrush(Qt.red))headItem.setForeground(QBrush(QColor(128,255,0)))headItem.setTextAlignment(Qt.AlignLeft)def settableproperty(self):# 4.2 选中表格中的某一行self.setSelectionBehavior(QAbstractItemView.SelectRows)"""动态插入行列 """def addRowColumn(self):"""当初始的行数或者列数不能满足需要的时候,我们需要动态的调整表格的大小,如入动态的插入行:insertColumn()动态插入列。insertRow(int)、insertColumn(int),指定位置插入行或者列"""rowcount = self.rowCount()self.insertRow(rowcount)"""动态移除行列 """def removeRowColumn(self):"""removeColumn(int column) 移除column列及其内容。removeRow(int row)移除第row行及其内容。:return:"""rowcount = self.rowCount()self.removeRow(rowcount-1)#=========第2部分:对单元格的进行设置============="""1.单元格设置字体颜色和背景颜色""""""2.设置单元格中的字体和字符大小""""""3.设置单元格内文字的对齐方式:""""""4.合并单元格效果的实现:""""""5.设置单元格的大小(见settableSize()函数)""""""6 单元格Flag的实现"""def setCellFontColor(self):newItem = self.item(0,1)newItem.setBackground(Qt.red)#newItem.setBackground(QColor(0, 250, 10))#newItem.(QColor(200, 111, 100))def setCellFontSize(self):"""首先,先生成一个字体QFont对象,并将其字体设为宋体,大小设为12,并且加粗再利用单元格的QTableWidgetItem类中的setFont加载给特定的单元格。如果需要对所有的单元格都使用这种字体,则可以使用self.MyTable.setFont(testFont)#利用QTableWidget类中的setFont成员函数,将所有的单元格都设成该字体:return:"""textFont = QFont("song", 12, QFont.Bold)newItem = QTableWidgetItem("张三")# newItem.setBackgroundColor(QColor(0,60,10))# newItem.setTextColor(QColor(200,111,100))newItem.setFont(textFont)self.setItem(0, 0, newItem)def setCellAlign(self):"""这个比较简单,使用newItem.setTextAlignment()函数即可,该函数的参数为单元格内的对齐方式,和字符输入顺序是自左相右还是自右向左。水平对齐方式有:Constant         Value  DescriptionQt.AlignLeft    0x0001  Aligns with the left edge.Qt.AlignRight   0x0002  Aligns with the right edge.Qt.AlignHCenter 0x0004  Centers horizontally in the available space.Qt.AlignJustify 0x0008  Justifies the text in the available space.垂直对齐方式:Constant        Value   DescriptionQt.AlignTop     0x0020  Aligns with the top.Qt.AlignBottom  0x0040  Aligns with the bottom.Qt.AlignVCenter 0x0080  Centers vertically in the available space.如果两种都要设置,只要用 Qt.AlignHCenter |  Qt.AlignVCenter 的方式即可:return:"""newItem = QTableWidgetItem("张三")newItem.setTextAlignment(Qt.AlignHCenter | Qt.AlignVCenter)self.setItem(0, 0, newItem)def setCellSpan(self):"""self.MyTable.setSpan(0, 0, 3, 1)# 其参数为: 要改变单元格的   1行数  2列数要合并的  3行数  4列数:return:"""self.setSpan(0,0,3,1)def update_item_data(self, data):"""更新内容"""self.setItem(0, 0, QTableWidgetItem(data))  # 设置表格内容(行, 列) 文字class UpdateData(QThread):"""更新数据类"""update_date=pyqtSignal(str)def run(self):cnt=0while True:cnt+=1self.update_date.emit(str(cnt))time.sleep(1)if __name__ == '__main__':# 实例化表格app = QApplication(sys.argv)myTable = MyTable()# 启动更新线程#update_data_thread = UpdateData()# update_data_thread.update_date.connect(myTable.update_item_data)  # 链接信号# update_data_thread.start()# 显示在屏幕中央# desktop = QApplication.desktop()  # 获取坐标# x = (desktop.width() - myTable.width()) // 2# y = (desktop.height() - myTable.height()) // 2# myTable.move(x, y)  # 移动# 显示表格myTable.show()app.exit(app.exec_())


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/255640.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

吴忠军 - 如何理解马云所说的月入两三万,三四万的人最幸福?

这句话源于一段两分钟的视频&#xff0c;马云的一次阿里内部会议演讲。 马云坦承&#xff0c;自己从第一天起就没想过当首富&#xff0c;还为此稀释公司持股&#xff0c;“没想到把自己的股份降到8%&#xff0c;还是有那么多&#xff0c;这是我没有想到的。” 在马云看来&#…

iOS小知识点(非UI部分)

1。 _cmd 表示当前方法的SEL指针&#xff0c; - (void)putString{} 对于这个函数_cmd 等效于selector(putString)转载于:https://www.cnblogs.com/dongfangchun/p/5341599.html

jQuery 操作 CSS

jQuery 拥有若干进行 CSS 操作的方法。我们将学习下面这些&#xff1a; addClass() - 向被选元素添加一个或多个类removeClass() - 从被选元素删除一个或多个类toggleClass() - 对被选元素进行添加/删除类的切换操作css() - 设置或返回样式属性转载于:https://www.cnblogs.com/…

彩色CCD相机工作原理

原理 黑白&#xff08;单色&#xff09;相机 CCD原理并不复杂。我们可以把它想象成一个顶部被打开的记忆芯片。因此光束可以射到记忆单元中。根据"光电效应”&#xff0c;这些光束在记忆单元中产生负电荷&#xff08;下图中右上部分&#xff09;。 曝光后&…

Linux 系统常用命令汇总(二) vi 文本编辑

文本编辑vi命令作用文件名编辑文本文件&#xff0c;若文件不存在同时创建该文件Ctrlf向后翻一页Ctrlb向前翻一页Ctrld向后翻半页Ctrlu向前翻半页光标移动到下一行-光标移动到上一行数字空格光标向右移动n个字符0移动到本行首个字符处$ 移动到本行最后一个字符处H光标移动到屏幕…

图像处理与计算机视觉:基础,经典以及最近发展(2)图像处理与计算机视觉相关的书籍

1. 数学 我们所说的图像处理实际上就是数字图像处理&#xff0c;是把真实世界中的连续三维随机信号投影到传感器的二维平面上&#xff0c;采样并量化后得到二维矩阵。数字图像处理就是二维矩阵的处理&#xff0c;而从二维图像中恢复出三维场景就是计算机视觉的主要任务之一。这…

【HTML学习】——HTML常见标签属性和方法介绍

目录 1、HTML分块--------< div> 2、HTML段落--------< p> 3、HTML标题--------< h1>…< h6> 4、HTML链接--------< a> 1)< a href“http://www.baidu.com”>百度< /a>&#xff08;点击百度&#xff0c;直接跳转到网页&#xf…

开发者应警惕的七种糟糕职业规划错误

那些心灵鸡汤式的说辞总爱美化失败&#xff1a;失败是成功之母啦、失败使人成长啦、别畏惧失败等等。但事实上&#xff0c;这种思路在软件开发领域也许并不适用——至少不完全适用。每位开发者在职业生涯中都不可避免会遭遇失败&#xff0c;但为什么不从他人的经验中汲取教训来…

Splay模板

打LCT的时候发现Splay很不熟, 因此这里贴一下模板 洛谷P3369 https://www.luogu.org/problem/show?pid3369#sub /* 提一些要注意的点: 1. 注意判断边界, 不要访问到空节点 2. 每一次操作或访问完以后, 记得要splay到root 3. insert操作只要update当前节点和父亲节点即可, 因为…

图像处理与计算机视觉 基础、经典以及最近发展

申明&#xff1a;本文非笔者原创&#xff0c;原文转载自&#xff1a;http://blog.csdn.net/liuyue2046/article/details/12658441 ***************************************************************************************************************************************…

【HTML学习】——一个网页HTML编程的构成

目录 1、html网页构成介绍 2、HTML标签介绍 全部的html标签&#xff1a; HTML: HyperText Markup Language | MDNhttps://developer.mozilla.org/en-US/docs/Web/HTML 一个网页文件一般由.html结尾的文件组成&#xff0c;主要由不同的标签对和内容组成&#xff0c;常见的html…

hbase里插入big int数据用Phoenix查看的报错问题

Phoenix建表create table "test_big_int"("ROW" varchar primary key,"ci"."column1" bigint) 在hbase里put数据hbase 里面进行put: put test_big_int,001,ci:column1,1 在Phoenix里进行查看&#xff08;问题出现&#xff09;第二个尝…

机器学习:利用卷积神经网络实现图像风格迁移 (一)

相信很多人都对之前大名鼎鼎的 Prisma 早有耳闻&#xff0c;Prisma 能够将一张普通的图像转换成各种艺术风格的图像&#xff0c;今天&#xff0c;我们将要介绍一下Prisma 这款软件背后的算法原理。就是发表于 2016 CVPR 一篇文章&#xff0c; “ Image Style Transfer Using Co…

jquery中attr和prop的区别

在高版本的jquery引入prop方法后&#xff0c;什么时候该用prop&#xff1f;什么时候用attr&#xff1f;它们两个之间有什么区别&#xff1f;这些问题就出现了。 关于它们两个的区别&#xff0c;网上的答案很多。这里谈谈我的心得&#xff0c;我的心得很简单&#xff1a; •对于…

博客园自定义样式

碎碎念&#xff1a; 已经很长时间没有更新过博客了&#xff0c;分析一下&#xff0c;一个是太懒了。。。所以很久没整理一下了。还有就是嫌弃博客园默认的博客界面真的太丑了&#xff0c;作为颜控的我真的无法忍受啊。个人比较喜欢用makedown来编写博客&#xff0c;但是博客园自…

【CSS】——cascading stylesheets层叠式样式表

目录 0、CSS介绍 1、CSS语句组成 2、CSS选择器的选择方式 1&#xff09;CSS选择器的方式和选择器大全&#xff1a; 2&#xff09;常见的三种方式&#xff1a; 3、添加CSS方式 1&#xff09;外部样式表 html调用css代码 css文件 html文件 展示 2&#xff09;内部样式表…

四 Apache Axis2 部署 WebService

最新版本1.7.4发布日期2016-10-21 Axis2官网下载如下文件&#xff1a; axis2-1.6.2-bin&#xff1a;二进制的axis axis2-1.6.2-docs&#xff1a;帮助文档 axis2-1.6.2-war&#xff1a;axis.war 文件 axis2-eclipse-codegen-plugin-1.6.2&#xff1a;Eclipse axis client 插件 a…

安装OpenCV:OpenCV 2.4.8或OpenCV 2.4.9 +VS 开发环境配置

因为读研期间的研究方向是图像处理&#xff0c;所以浅墨这段时间闭门研究了很多OpenCV和图像处理相关的知识与内容。眼看自己积累到一定的程度了&#xff0c;于是决定开始开设这个OpenCV系列专栏&#xff0c;总结自己所学&#xff0c;也分享知识给大家。 好了&#xff0c;这篇文…

powerdesigner中如何在自动生成建表SQL时添加模式名schema

1、在主菜单中选择“模型”→“users and roles”→“users”&#xff0c;新增一个user&#xff0c;其中"name"字段就是要添加的模式名。 2、在新增表时&#xff0c;在表属性的“general”页签中选择"owner"&#xff0c;选择刚才新增的user&#xff0c;即可…

spark 免密码登录- ssh 指定非22端口

vi /etc/profile在profile 文件最后一行加入命令&#xff1a; export SPARK_SSH_OPTS"-p 7315" #注&#xff1a;7315 是ssh 端口转载于:https://www.cnblogs.com/chengjunhao/p/8336086.html