- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图在按下按钮时生成动画,但在 self.frame2
返回到大小 0 后它不起作用:
这是一个例子:
帧返回0后,动画不再执行:
from PyQt5.QtWidgets import QMainWindow,QApplication
from PyQt5 import QtCore
from PyQt5 import uic
class Login(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
uic.loadUi("1.-Login.ui",self)
#Apariencia de Ventana
self.setWindowFlags(QtCore.Qt.FramelessWindowHint)
self.setAttribute(QtCore.Qt.WA_NoSystemBackground,True)
self.setAttribute(QtCore.Qt.WA_TranslucentBackground, True)
#Botones
self.Ajustes.clicked.connect(self.animaAjustes)
self.ComboSuc.lineEdit().setAlignment(QtCore.Qt.AlignCenter)
self.animation = QtCore.QPropertyAnimation(self.frame2, b'size', self)
self.animation.setStartValue(QtCore.QSize(0,0))
self.animation.setEndValue(QtCore.QSize(145,443))
self.animation.setDuration(200)
self.animation.setDirection(QtCore.QAbstractAnimation.Forward)
def animaAjustes(self):
if self.frame2.width()!=0:
self.frame2.setGeometry(0,0,0,0)
else:
self.animation.start()
app = QApplication([])
l = Login()
l.show()
app.exec_()
文件.ui
<?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>606</width>
<height>430</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<property name="styleSheet">
<string notr="true">background:qlineargradient(spread:pad, x1:0.565, y1:0, x2:0.508475, y2:1, stop:0 rgba(0, 0, 103, 0), stop:1 rgba(255, 255, 255, 0));</string>
</property>
<widget class="QWidget" name="centralwidget">
<property name="styleSheet">
<string notr="true">background:qlineargradient(spread:pad, x1:0.565, y1:0, x2:0.508475, y2:1, stop:0 rgba(0, 0, 103, 0), stop:1 rgba(255, 255, 255, 0));</string>
</property>
<widget class="QFrame" name="frame1">
<property name="geometry">
<rect>
<x>0</x>
<y>-10</y>
<width>481</width>
<height>441</height>
</rect>
</property>
<property name="styleSheet">
<string notr="true">
QFrame#frame1{
background:White;
border:0px;
}</string>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<widget class="QFrame" name="frame3">
<property name="geometry">
<rect>
<x>120</x>
<y>50</y>
<width>250</width>
<height>120</height>
</rect>
</property>
<property name="styleSheet">
<string notr="true">background-image:url(src/Logo.png);
background-position:center;
background-repeat:none;</string>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
</widget>
<widget class="QPushButton" name="Ajustes">
<property name="geometry">
<rect>
<x>450</x>
<y>35</y>
<width>31</width>
<height>23</height>
</rect>
</property>
<property name="styleSheet">
<string notr="true">QPushButton#Ajustes{
border:0px;
background:none;
}</string>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset>
<normaloff>src/Icons/icons8-settings.png</normaloff>src/Icons/icons8-settings.png</iconset>
</property>
</widget>
<widget class="QPushButton" name="Entrar">
<property name="geometry">
<rect>
<x>200</x>
<y>260</y>
<width>81</width>
<height>23</height>
</rect>
</property>
<property name="styleSheet">
<string notr="true">QPushButton#Entrar{
background:qlineargradient(spread:pad, x1:0.514, y1:0, x2:0.508475, y2:1, stop:0 rgba(0, 170, 213, 255), stop:1 rgba(19, 12, 64, 255));
color:white;
}
QPushButton#Entrar:pressed{
background:qlineargradient(spread:pad, x1:0.514, y1:0, x2:0.508475, y2:1, stop:0 rgba(19, 12, 64, 255), stop:0.994318 rgba(0, 170, 213, 255));
}
</string>
</property>
<property name="text">
<string>Entrar</string>
</property>
</widget>
<widget class="QLabel" name="LabelSuc">
<property name="geometry">
<rect>
<x>190</x>
<y>220</y>
<width>101</width>
<height>20</height>
</rect>
</property>
<property name="font">
<font>
<pointsize>9</pointsize>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">QLabel#LabelSuc{
border-bottom:1px solid qlineargradient(spread:pad, x1:0.983051, y1:0.608, x2:0, y2:0.585, stop:0 rgba(255, 255, 255, 0), stop:0.497175 rgba(16, 102, 214, 121), stop:1 rgba(255, 255, 255, 0));
color:#1687A1
}</string>
</property>
<property name="text">
<string>Sucusal</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
<widget class="QFrame" name="frame">
<property name="geometry">
<rect>
<x>0</x>
<y>10</y>
<width>481</width>
<height>21</height>
</rect>
</property>
<property name="styleSheet">
<string notr="true">background:#0584B1;</string>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<widget class="QPushButton" name="BotonClose">
<property name="geometry">
<rect>
<x>456</x>
<y>-2</y>
<width>21</width>
<height>21</height>
</rect>
</property>
<property name="font">
<font>
<pointsize>10</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">QPushButton#BotonClose{
border:0px;
background:none;
color:white;
}</string>
</property>
<property name="text">
<string>X</string>
</property>
</widget>
<widget class="QLabel" name="label_2">
<property name="geometry">
<rect>
<x>2</x>
<y>1</y>
<width>151</width>
<height>16</height>
</rect>
</property>
<property name="styleSheet">
<string notr="true">color:white;</string>
</property>
<property name="text">
<string>Exxe-Ventas v3.0 2019.01.01</string>
</property>
</widget>
</widget>
<widget class="QLabel" name="LabelStatus">
<property name="geometry">
<rect>
<x>0</x>
<y>424</y>
<width>481</width>
<height>16</height>
</rect>
</property>
<property name="styleSheet">
<string notr="true">color:white;
background:qlineargradient(spread:pad, x1:1, y1:0.545, x2:0, y2:0.585, stop:0 rgba(184, 21, 21, 57), stop:0.487 rgba(182, 27, 13, 186), stop:1 rgba(184, 21, 21, 57));</string>
</property>
<property name="text">
<string> Satus: Sin Conexion</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</widget>
<widget class="QFrame" name="frame2">
<property name="geometry">
<rect>
<x>480</x>
<y>0</y>
<width>0</width>
<height>443</height>
</rect>
</property>
<property name="styleSheet">
<string notr="true">QFrame#frame2{
border:0px;
border:2px solid grey;
background:white;
}</string>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<widget class="QLabel" name="label">
<property name="geometry">
<rect>
<x>-3</x>
<y>0</y>
<width>141</width>
<height>21</height>
</rect>
</property>
<property name="styleSheet">
<string notr="true">background:#0584B1;
color:white;</string>
</property>
<property name="text">
<string>Configuración</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
<widget class="QLabel" name="label_3">
<property name="geometry">
<rect>
<x>30</x>
<y>30</y>
<width>61</width>
<height>16</height>
</rect>
</property>
<property name="styleSheet">
<string notr="true">color:grey;</string>
</property>
<property name="text">
<string>Sucursal:</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
<widget class="QComboBox" name="ComboSuc">
<property name="geometry">
<rect>
<x>30</x>
<y>60</y>
<width>69</width>
<height>22</height>
</rect>
</property>
<property name="styleSheet">
<string notr="true">QComboBox#ComboSuc{
background:none;
border:0px;
border-bottom: 1px solid lightblue;
color:#05839C;
}
QComboBox QAbstractItemView
{
border:0px;
background:white;
color: grey;
}
QComboBox#ComboSuc::drop-down
{
subcontrol-origin: padding;
subcontrol-position: top right;
width: 15px;
color: white;
border-left-width: 0px;
border-left-color: darkgray;
border-left-style: solid; /* just a single line */
border-top-right-radius: 3px; /* same radius as the QComboBox */
border-bottom-right-radius: 3px;
padding-left: 10px;
}</string>
</property>
<property name="editable">
<bool>true</bool>
</property>
<item>
<property name="text">
<string>Exxe 1</string>
</property>
</item>
<item>
<property name="text">
<string>Exxe 3</string>
</property>
</item>
</widget>
</widget>
<zorder>frame2</zorder>
<zorder>frame1</zorder>
</widget>
</widget>
<resources/>
<connections/>
</ui>
最佳答案
几何图形是小部件相对于父级的位置,在初始情况下,几何图形是(480,0,0,443),也就是说,它的宽度为0,但位于frame1的右边缘将其设置为几何图形 (0 , 0, 0, 0) 后,将其移动到窗口的左上角位置,并应用动画,但您不明白为什么它位于第 1 帧后面。
为了更好地观察错误,请使用 raise_ 以使框架位于所有错误之上。
def animaAjustes(self):
if self.frame2.width() != 0:
self.frame2.setGeometry(0, 0, 0, 0)
else:
self.frame2.raise_() # <--- this change will make the error visible
self.animation.start()
解决办法是只改变尺寸,不改变几何形状(几何形状就是位置+尺寸):
def animaAjustes(self):
if self.frame2.width() > 0:
self.frame2.resize(0, 0)
else:
self.animation.start()
关于python - 为什么 QPropertyAnimation 动画不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54084416/
我正在尝试在 Qt 桌面应用程序中测试动画。我刚刚从帮助中复制了示例。单击按钮后,新按钮仅出现在左上角,没有动画(甚至结束位置也是错误的)。我错过了什么吗? Qt 5.0.1、Linux Mint 6
我正在设置一个新的桌面小部件,以使我的工作生活更轻松,并使用 QPropertyAnimation 使其变得漂亮。淡入淡出应用程序似乎不想起作用,并且以典型的编码方式,它使我的进度陷入停滞。 我正在个
我想让许多彩色点在背景上不断移动。 (下面的代码说明):PolkaDot 小部件是用随机颜色、大小、位置和持续时间构建的。 QPropertyAnimation 在屏幕上从左到右移动小部件,并在动画结
我的动画在这个 QPushButton 上没有按照我预期的方式工作。 这是我的 mainwindow.cpp,因为您在这里看不到任何特别奇怪的地方。在运行时,该按钮如人们所期望的那样出现。我没有任何特
我正在尝试使用多个 QPropertyAnimation 向上移动一个小部件,然后向右移动。 代码如下: QPropertyAnimation* animationUp; QPropertyAnima
这是我的代码: void Widget::update() { if (a==1) { QPushButton button("Animated Button");
我正在尝试使用 Qt 的动画框架。我正在使用 Qt 网站上的一些示例代码,但它无法正常工作,错误:setGeometryDp: 无法在 QWidgetWindow/'QPushButtonClassW
下面的代码没有按预期为按钮设置动画。但如果按钮是独立的并且在它是子部件时停止工作,它会起作用。我在这里做错了什么? 我正在 Ubuntu 上尝试这个。 class TestWindow(QtGui.Q
我正在学习 Qt,认为动画按钮很重要。我正在尝试创建我的自定义 QPushButton 类,它重新实现鼠标进入和离开事件并使用 qt 动画框架。 QPropertyAnimation QPropert
Qt 4.6+ 中的新动画框架基于具有“void setUpdateInterval(int interval)”公共(public)函数的 QTimeLine。基于 QTimeLine,QGraph
我有以下问题:我想使用 QPropertyAnimation 调整窗口大小,以便看起来不错,但是在调整大小时窗口也会立即移动,虽然我不想这样做,但我只想调整窗口大小和不改变其位置值。 所以,这是我的代
我试图在按下按钮时生成动画,但在 self.frame2 返回到大小 0 后它不起作用: 这是一个例子: 帧返回0后,动画不再执行: from PyQt5.QtWidgets import QMain
尝试使用 PyQt5 并使用 QPropertyAnimation 对一条从无到有 (0,0) 到 (200, 200) 的线进行动画处理。我已经阅读了大量有关 Qt 的文档并尝试了几个示例,但我就是
根据以下代码片段,我对QPropertyAnimation 和QParallelAnimationGroup 有疑问: // Create the opacity animation QPropert
我面临一个非常严重的情况。通过写这个问题,我希望真正的专业人士对我将要描述的问题发表意见。我在 https://bugreports.qt.io/ 中报告了一个错误: I have created Q
问题是当我调用QPropertyAnimation.start()时,什么也没发生。 颜色是我要设置动画的属性,按钮是类。 class Button(QPushButton): def __i
请参阅下面的代码。我有一个启动动画的按钮。问题是我只在按下第二个按钮后才看到动画。但是当动画开始时,我注意到它实际上从第一次按下按钮开始就开始了,因为它从一个时刻开始 = [第 1 次和第 2 次按钮
我创建了一个 QRect 对象 QRect ellipse(10.0 , 10.0 , 10.0 , 10.0); QPainter painter(this); painter.setBrush(Q
1。简介 我在 Windows 10 上使用 Python 3.7 并使用 PyQt5 作为 GUI。在我的应用程序中,我得到了一个 QScrollArea()里面有一排按钮。单击时,按钮必须移出该区
我想在 2 秒的时间内逐渐降低 QPushButton 的不透明度以完全透明。为此,我使用了 QPropertyAnimation 类并使用按钮的属性“windowOpacity”来实现效果。但这仅适
我是一名优秀的程序员,十分优秀!