In:
Ein Fortschrittsbalken eine dünne Linie am unteren Rand des QLineEdit sein könnte PyQt4 die QLinearGradient
bekommt eine horizontale Ausrichtung. Während PySide scheint es behandelt wie es ist ein vertikaler Farbverlauf. Der Code erstellt eine QLineEdit
mit seiner Hintergrundfarbe über palette.setBrush(QPalette.Base, QBrush(QLinearGradient))
festgelegt. Durch Drücken der Taste wird der Fortschrittsbalkenwert um 10% erhöht.
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_()
Für pyside wo der Gradient könnte horizontal sein:
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_()
Ich denke, dass ich die SetPalette Methode von QLineEdit verwenden würde. Ähnlich wie Sie den Hintergrund eines QLineEdit festlegen. Versuchen Sie, wie Sie Hintergründe mit z. ein Bild. –
Sicher, es ist eine gute Idee! Vielen Dank! – alphanumeric