矩形状态仅在单击 PyQt5 QML 时更改

谢尔盖·阿尼西莫夫

我有我的新 PyQt5 应用程序。我想在 QMainWindow 中添加 QQuickWidget 并使用 QML 设置他的属性。这就是我所做的:

class mainWindow(QtWidgets.QMainWindow):
    def __init__(self):
        super(mainWindow,self).__init__()
        self.setGeometry(100,100,800,600)

        engine = PyQt5.QtQml.QQmlEngine(self)
        view = QtQuickWidgets.QQuickWidget(engine,self)
        view.setSource(PyQt5.QtCore.QUrl("files/newqml.qml"))

到 QML 文件中,我创建了带有状态的矩形,当鼠标悬停在按钮上时应该更改状态。但是当它悬停时 - 什么也没有发生。当我单击按钮和单击并离开按钮时,状态会发生变化。请帮帮我。我怎样才能做到正确?
完整的 QML 代码:

import QtQuick 2.3
import QtQuick.Controls 1.2
import QtQuick.Window 2.2
import QtQuick.Controls.Styles 1.2

Rectangle{
  signal buttonPressedSignal
  signal buttonReleasedSignal
  id: topButton
  width:80
  height: 40
  color: 'white'
  border {width: 2; color: '#4CAF50'}
  state: 'Normal'
  Text {
    id: buttonText
    anchors.centerIn: parent
    text:'Button'
    font.pixelSize: 20
    font.family: 'Hallo sans'
    color: 'black'
  }
  MouseArea{
    anchors.fill: topButton
    hoverEnabled: true
    onPressed: parent.buttonPressedSignal()
    onReleased: parent.buttonReleasedSignal()
    onEntered: parent.state='NotNormal'
    onExited: parent.state = 'Normal'
  }
  states:[
    State{
      name: 'Normal';
      PropertyChanges{target:buttonText;color:'black';easing.type:Easing.InOutElastic}
    },
    State{
      name:'NotNormal';
      PropertyChanges{target:buttonText;color:'white';easing.type:Easing.InOutElastic}
    }
  ]
  transitions:[
  Transition{
    to: '*'
    ColorAnimation{target:buttonText;duration:400}
  }
  ]
}
埃利亚内斯克

问题是,你还没有加入QQuickWidgetQMainWindow正确的,你必须使用setCentralWidget或布局来放置它们。qml 也有一个错误 easing.type is part of PropertyAnimationand not of PropertyChanges

import sys
from PyQt5 import QtWidgets, QtQml, QtQuickWidgets, QtCore


class mainWindow(QtWidgets.QMainWindow):
    def __init__(self):
        super(mainWindow,self).__init__()
        self.setGeometry(100,100,800,600)

        engine = QtQml.QQmlEngine(self)
        view = QtQuickWidgets.QQuickWidget(engine,self)
        view.setSource(QtCore.QUrl("files/newqml.qml"))
        self.setCentralWidget(view)


if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    w = mainWindow()
    w.show()
    sys.exit(app.exec_())

.qml

import QtQuick 2.3

Rectangle{
    signal buttonPressedSignal
    signal buttonReleasedSignal
    id: topButton
    width:80
    height: 40
    color: 'white'
    border {width: 2; color: '#4CAF50'}
    state: 'Normal'
    Text {
        id: buttonText
        anchors.centerIn: parent
        text:'Button'
        font.pixelSize: 20
        font.family: 'Hallo sans'
        color: 'black'
    }
    MouseArea{
        anchors.fill: topButton
        hoverEnabled: true
        onPressed: parent.buttonPressedSignal()
        onReleased: parent.buttonReleasedSignal()
        onEntered: parent.state='NotNormal'
        onExited: parent.state = 'Normal'
    }
    states:[
        State{
            name: 'Normal';
            PropertyChanges{target:buttonText;color:'black';}
        },
        State{
            name:'NotNormal';
            PropertyChanges{target:buttonText;color:'white';}
        }
    ]
    transitions:[
        Transition{
            to: '*'
            ColorAnimation{target:buttonText;duration:400}
            PropertyAnimation{target:buttonText; easing.type:Easing.InOutElastic;}
        }
    ]
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

更改画布颜色 pyqt5 qml

来自分类Dev

每次单击按钮PyQt5时移动标签

来自分类Dev

如何从QML关闭Pyqt5程序?

来自分类Dev

mouseReleaseEvent在应用程序启动时触发,而不是在PyQt5中单击时触发

来自分类Dev

如何更改pyqt5 QTableWidget中选定或单击的单元格的背景颜色?

来自分类Dev

PyQt5 QML信号到Python插槽?

来自分类Dev

简单的PyQt5 QML应用导致分段错误

来自分类Dev

使用 PyInstaller 在 --onefile 中使用 QML 构建 PyQt5

来自分类Dev

在 PyQt5 中使用 Radialbar QML 端口

来自分类Dev

单击主窗口中的按钮PyQt5 Python时打开的窗口

来自分类Dev

更改PyQt5的调色板

来自分类Dev

PyQt5:如何更改QInputDialog OkButtonText?

来自分类Dev

PyQt5 更改图像

来自分类Dev

PyQt5按钮单击动画

来自分类Dev

PyQt5 未选中复选框时,我可以从状态栏中删除进度吗?

来自分类Dev

pyqt5升级到qt5时如何更改qmake

来自分类Dev

Qt5 / PyQt5:具有QML前端和Python后端的自定义QML组件

来自分类Dev

Qt5 / PyQt5:具有QML前端和Python后端的自定义QML组件

来自分类Dev

满足条件时更改PyQt5 QTableWidget行样式表

来自分类Dev

将QML中的QSortFilterProxyModel与PyQt5一起使用

来自分类Dev

我想将Qt QML组合框设置为PyQt5对象属性

来自分类Dev

如何使用带有多个python文件的QML构建PyQt5项目?

来自分类Dev

带有QML的PyQt5可执行应用程序

来自分类Dev

将QML的ChartView保存到PyQt5中的图像文件

来自分类Dev

带有QML的PyQt5可执行应用程序

来自分类Dev

将QML中的QSortFilterProxyModel与PyQt5一起使用

来自分类Dev

如何从 gnome 面板 QML PyQt5 中隐藏正在运行的应用程序图标

来自分类Dev

当MouseArea被另一个MouseArea覆盖时,如何在qml中更改光标形状

来自分类Dev

单击PyQt表项时更改属性

Related 相关文章

  1. 1

    更改画布颜色 pyqt5 qml

  2. 2

    每次单击按钮PyQt5时移动标签

  3. 3

    如何从QML关闭Pyqt5程序?

  4. 4

    mouseReleaseEvent在应用程序启动时触发,而不是在PyQt5中单击时触发

  5. 5

    如何更改pyqt5 QTableWidget中选定或单击的单元格的背景颜色?

  6. 6

    PyQt5 QML信号到Python插槽?

  7. 7

    简单的PyQt5 QML应用导致分段错误

  8. 8

    使用 PyInstaller 在 --onefile 中使用 QML 构建 PyQt5

  9. 9

    在 PyQt5 中使用 Radialbar QML 端口

  10. 10

    单击主窗口中的按钮PyQt5 Python时打开的窗口

  11. 11

    更改PyQt5的调色板

  12. 12

    PyQt5:如何更改QInputDialog OkButtonText?

  13. 13

    PyQt5 更改图像

  14. 14

    PyQt5按钮单击动画

  15. 15

    PyQt5 未选中复选框时,我可以从状态栏中删除进度吗?

  16. 16

    pyqt5升级到qt5时如何更改qmake

  17. 17

    Qt5 / PyQt5:具有QML前端和Python后端的自定义QML组件

  18. 18

    Qt5 / PyQt5:具有QML前端和Python后端的自定义QML组件

  19. 19

    满足条件时更改PyQt5 QTableWidget行样式表

  20. 20

    将QML中的QSortFilterProxyModel与PyQt5一起使用

  21. 21

    我想将Qt QML组合框设置为PyQt5对象属性

  22. 22

    如何使用带有多个python文件的QML构建PyQt5项目?

  23. 23

    带有QML的PyQt5可执行应用程序

  24. 24

    将QML的ChartView保存到PyQt5中的图像文件

  25. 25

    带有QML的PyQt5可执行应用程序

  26. 26

    将QML中的QSortFilterProxyModel与PyQt5一起使用

  27. 27

    如何从 gnome 面板 QML PyQt5 中隐藏正在运行的应用程序图标

  28. 28

    当MouseArea被另一个MouseArea覆盖时,如何在qml中更改光标形状

  29. 29

    单击PyQt表项时更改属性

热门标签

归档