【发布时间】:2014-04-22 08:43:57
【问题描述】:
嗨,我想在 QLIneEdit 后面添加 QProgressBar,就像在 Safari 浏览器或 IE 中一样,所以这是我的起点,我如何将 ProgressBar 和 MyLineEdit 挂钩在一起,以便当用户完成输入路径时进度栏应该在路径打开时显示进度!!!
from PyQt4 import QtGui, QtCore
import sys
class ProgressBar(QtGui.QProgressBar):
""" docstring for ProgressBar
"""
def __init__(self, parent=None):
super(ProgressBar, self).__init__(parent)
self.timer = QtCore.QBasicTimer()
self.step = 0
self.doAction()
def timerEvent(self, e):
if self.step >= 100:
self.timer.stop()
return
self.step = self.step + 15
self.setValue(self.step)
def doAction(self):
if self.timer.isActive():
self.timer.stop()
else:
self.timer.start(100, self)
class MyLineEdit(QtGui.QLineEdit):
""" docstring for MyLineEdit
"""
def __init__(self, parent=None):
super(MyLineEdit, self).__init__(parent)
# I want to hook this bar at the backgroind of MyLineEdit
pbar = ProgressBar()
class Example(QtGui.QWidget):
def __init__(self, parent=None):
super(Example, self).__init__(parent)
self.pbar = ProgressBar(self)
self.editbx = MyLineEdit(self.pbar)
newPalette = QtGui.QPalette()
newPalette.setColor(self.editbx.backgroundRole(), QtCore.Qt.transparent)
self.editbx.setPalette(newPalette)
self.editbx.setText("Defaukt text set")
self.editbx.setStyleSheet("QLineEdit { border:none;}")
self.pbar.setStyleSheet("QProgressBar {border:none;}")
self.initUI()
def initUI(self):
# self.pbar.setGeometry(30, 40, 200, 25)
self.setGeometry(300, 300, 280, 170)
self.setWindowTitle('QtGui.QProgressBar')
self.show()
def main():
app = QtGui.QApplication(sys.argv)
win = Example()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
我也期待添加一个 QCombobox 来代替输入的文本,以便它可以列出其他现有文件夹,而不是 QCompleter 使用的方式,尽管它没有 QCombobox 的外观,而且我不想让用户输入任何内容不存在的。
任何帮助将不胜感激。
【问题讨论】:
-
这与您在此处发布的问题基本相同吗? stackoverflow.com/questions/21395619/…我知道它也没有答案,只是想检查一下
-
aahh 是的,实际上我忘记了它,因为现在我才有时间所以开始做一些事情,我将删除你指出的旧问题。
标签: python pyqt custom-controls qlineedit qprogressbar