gpt4 book ai didi

pyqt4 - 如何在 QLineEdit 中插入按钮

转载 作者:行者123 更新时间:2023-12-04 16:20:27 25 4
gpt4 key购买 nike

我需要帮助在 QLineEdit 中插入一个按钮可以调用一个函数。

例如,像这个谷歌图片:

Button in line edit

最佳答案

以下是来自 here 的 Qt 代码的几乎直接翻译。 .

区别:

  • 按钮始终可见
  • 单击按钮发出 buttonClicked(bool)信号

  • 代码:

    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('/path/to/my_fancy_icon.png')
    main.buttonClicked.connect(buttonClicked)
    main.show()

    sys.exit(app.exec_())

    关于pyqt4 - 如何在 QLineEdit 中插入按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12462562/

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