如何通过将光标放在框内来调整尺寸? - python

我想知道当光标在光标上方和外侧时如何更改qframe的大小。

也就是说:

默认值:框架上的宽度(50)光标:框架外的宽度(100)光标:宽度(50)

根据我的研究,我认为它使用的是dragEnterEvent和dragLeaveEvent

这是我尝试的:

from PyQt5.QtWidgets import QMainWindow,QApplication
from PyQt5 import QtCore
from PyQt5 import uic


class Principal(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        uic.loadUi("other.ui",self)

    def dragEnterEvent(self,obj,event):
        if event == self.mouseMoveEvent:
            if obj == self.frame:
                self.frame.width(100)
    def dragLeaveEvent(self,obj,event):
        if event == self.mouseMoveEvent:
            if obj == self.frame:
                self.frame.width(50)


app = QApplication([])
p = Principal()
p.show()
app.exec_()

其他

    <?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>580</width>
    <height>368</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>MainWindow</string>
  </property>
  <widget class="QWidget" name="centralwidget">
   <widget class="QFrame" name="frame">
    <property name="geometry">
     <rect>
      <x>180</x>
      <y>70</y>
      <width>151</width>
      <height>141</height>
     </rect>
    </property>
    <property name="styleSheet">
     <string notr="true">
background:red;
</string>
    </property>
    <property name="frameShape">
     <enum>QFrame::StyledPanel</enum>
    </property>
    <property name="frameShadow">
     <enum>QFrame::Raised</enum>
    </property>
   </widget>
  </widget>
 </widget>
 <resources/>
 <connections/>
</ui>

参考方案

dragEnterEvent和dragLeaveEvent是在拖动鼠标时调用的,不是在鼠标进入或退出时调用的,而是将其编写所在的类(在这种情况下是窗口而不是框架)作为参考,因此是不合适的。

如果要通过不能覆盖为框架的对象的事件通知事件,请使用类型QEvent::EnterQEvent::Leave的事件安装事件过滤器。

from PyQt5 import QtCore, QtWidgets, uic

class Principal(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        super(Principal, self).__init__(parent)
        uic.loadUi("other.ui",self)
        self.frame.installEventFilter(self)

    def eventFilter(self, watched, event):
        if self.frame is watched:
            if event.type() == QtCore.QEvent.Enter:
                self.frame.resize(50, self.frame.height())
            elif event.type() == QtCore.QEvent.Leave:
                self.frame.resize(100, self.frame.height())
        return super(Principal, self).eventFilter(watched, event)

if __name__ == '__main__':
    import sys
    app = QtWidgets.QApplication(sys.argv)
    p = Principal()
    p.show()
    sys.exit(app.exec_())

另一方面,作为对不稳定区域的逻辑观察:

首先考虑鼠标的位置在框架之外。
将鼠标放置在相对于框架的位置90的右侧之后,由于其逻辑位于框架内,因此必须将其宽度更改为50。
更改后,鼠标将位于外部,因此宽度将变为100,位于框架内部,我们将返回到步骤2,生成宽度的波动。

Python ElementTree:在循环中替换元素 - python

我正在尝试创建一个脚本,该脚本循环创建一个xml文件,并为两个元素增加值。 (使用netaddr的IP地址,以及递增的tag / member元素,tag01-tag10)from netaddr import IPNetwork import xml.dom.minidom import lxml.etree as etree import xml.etr…

Python Pandas导出数据 - python

我正在使用python pandas处理一些数据。我已使用以下代码将数据导出到excel文件。writer = pd.ExcelWriter('Data.xlsx'); wrong_data.to_excel(writer,"Names which are wrong", index = False); writer.…

将python scikit学习模型导出到pmml - python

我想将python scikit-learn模型导出到PMML。哪个python软件包最合适?我阅读了有关Augustus的内容,但是我无法使用scikit-learn模型找到任何示例。 python大神给出的解决方案 SkLearn2PMML是 JPMML-SkLearn命令行应用程序周围的薄包装。有关受支持的Scikit-Learn Estimator和…

按列名称显示的Python Selenium复制表列 - python

我有一个包含这些标题的表,如下所示:如何使用xpath选择整列存储在数组中。我希望使用不同的数组,例如:courses = [] teacher = [] avg = [] 请记住,这些列没有任何ID或类,因此我需要一种仅使用列名进行选择的方法。这是表格的代码:<table border="0"> <tbody> …

Python numpy数据指针地址无需更改即可更改 - python

编辑经过一些摆弄之后,到目前为止,我已经隔离了以下状态:一维数组在直接输入变量时提供两个不同的地址,而在使用print()时仅提供一个地址2D数组(或矩阵)在直接输入变量时提供三个不同的地址,在使用print()时提供两个地址3D数组在直接输入变量时提供两个不同的地址,而在使用print()时仅给出一个(显然与一维数组相同)像这样:>>> …