gpt4 book ai didi

python - 如何将QLineEdit背景变成进度条

转载 作者:行者123 更新时间:2023-11-30 22:56:28 26 4
gpt4 key购买 nike

该代码使用 QLineEditQPushButton 创建一个对话框。单击按钮时,我希望 QLineEdit 变成进度条,显示按下按钮触发的进程的进度。该过程完成后,QLineEdit 应该恢复到正常的“LineEdit”外观。如何实现这一目标?

enter image description here

这是 Photoshop 编辑的想法:

enter image description here

进度条可以是 QLineEdit 底部的一条细线: enter image description here

from PyQt4 import QtCore, QtGui
import time

class Dialog(QtGui.QDialog):
def __init__(self, parent=None):
QtGui.QDialog .__init__(self, parent)
mainLayout = QtGui.QVBoxLayout()
lineEdit = QtGui.QLineEdit('ITEM 001')
mainLayout.addWidget(lineEdit)
button = QtGui.QPushButton('Push Button')
button.clicked.connect(self.buttonClicked)
mainLayout.addWidget(button)
self.setLayout(mainLayout)

def buttonClicked(self):
print 'button clicked'
for i in range(3):
time.sleep(1)
print '...processing %s'%i

if __name__ == '__main__':
app = QtGui.QApplication([])
window = Dialog()
window.resize(300, 50)
window.show()
app.exec_()

最佳答案

在 PyQt4 中,QLinearGradient 获得水平方向。而 PySide 似乎将其处理为垂直渐变。该代码创建一个 QLineEdit,其背景颜色通过 palette.setBrush(QPalette.Base, QBrush(QLinearGradient)) 设置。按下按钮会将进度条值提高 10%。

enter image description here

from PyQt4 import QtCore, QtGui
import time


class Dialog(QtGui.QDialog):
value = 0.001
def __init__(self, parent=None):
QtGui.QDialog .__init__(self, parent)
mainLayout = QtGui.QVBoxLayout()

self.lineedit = QtGui.QLineEdit()
self.setValues()
mainLayout.addWidget(self.lineedit)
button = QtGui.QPushButton('Calculate')
button.clicked.connect(self.buttonClicked)
mainLayout.addWidget(button)
self.setLayout(mainLayout)

def setValues(self):
self.lineedit.setText('progress %s'%self.value)
palette = self.lineedit.palette()
QRectF = QtCore.QRectF(self.lineedit.rect())
gradient = QtGui.QLinearGradient(QRectF.topLeft(), QRectF.topRight())
gradient.setColorAt(self.value-0.001, QtGui.QColor('#f99e41'))
gradient.setColorAt(self.value, QtGui.QColor('#ffffff'))
gradient.setColorAt(self.value+0.001, QtGui.QColor('#ffffff'))
palette.setBrush(QtGui.QPalette.Base, QtGui.QBrush(gradient))
self.lineedit.setPalette(palette)

def buttonClicked(self):
if self.value >0.9:
self.value = 0.001
else:
self.value=self.value+0.1

self.setValues()
time.sleep(1)

if __name__ == '__main__':
app = QtGui.QApplication([])
window = Dialog()
window.resize(300, 50)
window.show()
app.exec_()

对于 PySide,渐变可能是水平的:

import PySide.QtCore as QtCore
import PySide.QtGui as QtGui

class Dialog(QtGui.QDialog):
value = 1.00
def __init__(self, parent=None):
QtGui.QDialog .__init__(self, parent)
mainLayout = QtGui.QVBoxLayout()

self.lineedit = QtGui.QLineEdit()
self.setValues()
mainLayout.addWidget(self.lineedit)
button = QtGui.QPushButton('Calculate')
button.clicked.connect(self.buttonClicked)
mainLayout.addWidget(button)
self.setLayout(mainLayout)

def setValues(self):
self.lineedit.setText('progress %s'%self.value)
palette = self.lineedit.palette()
QRectF = QtCore.QRectF(self.lineedit.rect())
gradient = QtGui.QLinearGradient(QRectF.topLeft(), QRectF.topRight())
gradient.setColorAt(self.value-0.001, QtGui.QColor('#ffffff'))
gradient.setColorAt(self.value, QtGui.QColor('#f99e41'))
gradient.setColorAt(self.value+0.001, QtGui.QColor('#f99e41'))
palette.setBrush(QtGui.QPalette.Base, QtGui.QBrush(gradient))
self.lineedit.setPalette(palette)

def buttonClicked(self):
if self.value <0.1:
self.value = 1.00
else:
self.value=self.value-0.1

self.setValues()


if __name__ == '__main__':
app = QtGui.QApplication([])
window = Dialog()
window.resize(300, 50)
window.show()
app.exec_()

关于python - 如何将QLineEdit背景变成进度条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36972132/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com