码迷,mamicode.com
首页 > 其他好文 > 详细

pyqt lineedit右边显示按钮效果

时间:2015-02-12 13:45:22      阅读:691      评论:0      收藏:0      [点我收藏+]

标签:

from PyQt4 import QtGui, QtCore

 

class ButtonLineEdit(QtGui.QLineEdit):

    buttonClicked = QtCore.pyqtSignal(bool)

 

    def __init__(self, icon_file, parent=None):

        super(ButtonLineEdit, self).__init__(parent)

 

        self.button = QtGui.QToolButton(self)

        self.button.setIcon(QtGui.QIcon(icon_file))

        self.button.setStyleSheet(‘border: 0px; padding: 0px;‘)

        self.button.setCursor(QtCore.Qt.ArrowCursor)

        self.button.clicked.connect(self.buttonClicked.emit)

 

        frameWidth = self.style().pixelMetric(QtGui.QStyle.PM_DefaultFrameWidth)

        buttonSize = self.button.sizeHint()

 

        self.setStyleSheet(‘QLineEdit {padding-right: %dpx; }‘ % (buttonSize.width() + frameWidth + 1))

        self.setMinimumSize(max(self.minimumSizeHint().width(), buttonSize.width() + frameWidth*2 + 2),

                            max(self.minimumSizeHint().height(), buttonSize.height() + frameWidth*2 + 2))

 

    def resizeEvent(self, event):

        buttonSize = self.button.sizeHint()

        frameWidth = self.style().pixelMetric(QtGui.QStyle.PM_DefaultFrameWidth)

        self.button.move(self.rect().right() - frameWidth - buttonSize.width(),

                         (self.rect().bottom() - buttonSize.height() + 1)/2)

        super(ButtonLineEdit, self).resizeEvent(event)

import sys

from PyQt4 import QtGui

 

def buttonClicked():

    print ‘You clicked the button!‘

 

if __name__ == ‘__main__‘:

    app = QtGui.QApplication(sys.argv)

 

    main = ButtonLineEdit(r‘C:\Users\Administrator\Desktop\a.jpg‘)

    main.buttonClicked.connect(buttonClicked)

    main.show()

 

    sys.exit(app.exec_())

 技术分享

pyqt lineedit右边显示按钮效果

标签:

原文地址:http://www.cnblogs.com/mhxy13867806343/p/4287738.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!