VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > Python基础教程 >
  • PYQT5 系列(一)——参考自《弗兰克万岁》(3)

     self.width = 24
        self.height = 42
        self.edit.resize(self.width, self.height)
        self.document = self.edit.document()
        self.document.contentsChanged.connect(self.textAreaChanged)
        self.edit.setLineWrapMode(QTextEdit.NoWrap)
复制代码
    def textAreaChanged(self):
        self.document.adjustSize()
 
        newWidth = self.document.size().width() + 10
        newHeight = self.document.size().height() + 20
        if newWidth != self.edit.width():
            self.edit.setFixedWidth(newWidth)
        if newHeight != self.edit.height():
            self.edit.setFixedHeight(newHeight)
复制代码

PYQT5(12)可复用的自动保存窗口位置的frame

复制代码
import json
import os
from PyQt5.QtWidgets import QMainWindow
class AutoSaveWindow(QMainWindow):
    def __init__(self,name=''):
        #注意初始化的时候要带上name参数
        super().__init__()
        self.name=name
        if os.path.exists('window_location_%s.txt'%self.name):
            self.load_location()
        #每次启动都检查位置并移动
        

    def closeEvent(self, *args, **kwargs):
        self.save_location()

    def save_location(self):
        with open('window_location_%s.txt'%self.name, 'w') as f:
            data = {'x': self.x(), 'y': self.y()}
            f.write(json.dumps(data))

    def load_location(self):
        with open('window_location_%s.txt'%self.name, 'r') as f:
            txt = f.read()
            print(txt)
            j = json.loads(txt)
            self.move(j['x'],j['y'])
复制代码

PYQT5(13)重复绑定按钮事件需要做的一件事情

btn.disconnect()

PYQT5(14)pyqt5 QTreeWidget使用集锦(如右键菜单)

比较好的教程:https://zhuanlan.zhihu.com/p/36033317

 
image


【简介】

PyQT5中 QTreeWidget 例子

复制代码
from PyQt5.QtWidgets import *
import sys

class TreeWidgetDemo(QMainWindow):
def **init**(self, parent=None):
super(TreeWidgetDemo, self).**init**(parent)
self.setWindowTitle('TreeWidget 例子')
self.tree = QTreeWidget()
# 设置列数
self.tree.setColumnCount(2)
# 设置头的标题
self.tree.setHeaderLabels(['Key', 'Value'])
# 设置自适应宽度
self.header().setSectionResizeMode(QHeaderView.ResizeToContents)
root = QTreeWidgetItem(self.tree)
root.setText(0, 'root')
root.setText(1, '0')

    child1 = QTreeWidgetItem(root)
    child1.setText(0, 'child1')
    child1.setText(1, '1')

    child2 = QTreeWidgetItem(root)
    child2.setText(0, 'child2')
    child2.setText(1, '2')

    child3 = QTreeWidgetItem(root)
    child3.setText(0, 'child3')
    child3.setText(1, '3')

    child4 = QTreeWidgetItem(child3)
    child4.setText(0, 'child4')
    child4.setText(1, '4')

    child5 = QTreeWidgetItem(child3)
    child5.setText(0, 'child5')
    child5.setText(1, '5')

    self.tree.addTopLevelItem(root)
    self.tree.clicked.connect(self.onTreeClicked)

    self.setCentralWidget(self.tree)

def onTreeClicked(self, qmodelindex):
    item = self.tree.currentItem()
    print("key=%s ,value=%s" % (item.text(0), item.text(1)))
复制代码

启动一下试试

if **name** == '**main**':
app = QApplication(sys.argv)
tree = TreeWidgetDemo()
tree.show()
sys.exit(app.exec_())

分析判断是否是父项

def onTreeClicked(self, qmodelindex):
    item = self.tree.currentItem()
     if item.parent()==None:
        print("key=%s ,value=%s" % (item.text(0), item.text(1)))
        #None表示是最高一级

信号触发条件:

复制代码
activated(QModelIndex) 当用户激活index指定的项目时,发出此信号
clicked(QModelIndex) 左键单击鼠标按钮时,发出此信号
collapsed(QModelIndex) 当索引指定的项目折叠时,发出信号。
currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)当前项目更改时,发出信号
doubleClicked(QModelIndex) 双击鼠标按钮时,发出此信号
entered(QModelIndex) 当鼠标光标进入index指定的项目时,发出此信号
expanded(QModeldelIndex) 当索引指定的项目展开时,发出信号
iconSizeChanged(QSize) 在视图可见时设置此图标大小时,发出此信号
itemActivated(QTreeWidgetItem*,int) 当用户通过单击,双击或按特殊键(例如,Enter)激活项目时,发出信号
itemChanged(QTreeWidgetItem*,int) 当指定项目中列的内容发生更改时,发出信号
itemClicked(QTreeWidgetItem*,int) 当用户在窗口内单击时,发出信号。
itemCollapsed(QTreeWidgetItem*) 折叠指定项目时,发出信号
itemDoubleClicked(QTreeWidgetItem*,int) 当用户在窗口内双击时,发出信号
itemEntered(QTreeWidgetItem*,int) 当鼠标光标进入指定列上的项目时,发出信号
itemExpanded(QTreeWidgetItem*) 扩展指定项目时,发出信号
itemPressed(QTreeWidgetItem*,int) 当用户在窗口内按下鼠标按钮时,发出信号。
itemSelectionChange() 当树构件中的选择发生变化时,发出信号
pressed(QModelIndex) 按下鼠标按钮时,发出信号
viewportEntered() 当鼠标光标进入控件时,发出信号
复制代码

获取父项某一个column的内容和

复制代码
    def getLocation(self,item):

        if item.parent():
            temp = item.parent().text(0)
            parent=self.getLocation(item.parent())
            if parent :
                res=os.path.join(parent,temp)

                return res
            else:
                return temp
        else:
            return 0
#举例,text(0)是文件夹的名称,那么递归后就可以获取全部路径
复制代码

右键菜单

复制代码
     def __init__(self):
        self.setContextMenuPolicy(Qt.CustomContextMenu)#打开右键菜单的策略
        self.customContextMenuRequested.connect(self.rightClickMenu)#绑定事件

    def rightClickMenu(self,pos):
        try:
            self.contextMenu = QMenu()#创建对象
            self.actionA = self.contextMenu.addAction(u'动作')#添加动作
            self.actionA = self.contextMenu.addAction(u'动作b')
            self.actionA.triggered.connect(self.actionHandler)
            self.contextMenu.exec_(self.mapToGlobal(pos))#随指针的位置显示菜单
            self.contextMenu.show()#显示
        except Exception as e:
            print(e)
    def actionHandler(self):
        print(self.currentItem().text(0))
复制代码

删除子节点下的所有item

                item=self.currentItem()
                for i in range(0,item.childCount()):
                    print(item.child(item.childCount()-1).text(0))
                    item.removeChild(item.child(item.childCount()-1))
                

 


相关教程
关于我们--广告服务--免责声明--本站帮助-友情链接--版权声明--联系我们       黑ICP备07002182号