2016-05-12 99 views
0

我想在我的QMessageBox提示能夠複製的文本,所以我想我可以把QMessageBox提示一個QLineEdit的再設置任何我想要的QLineEdit的文本,所以用戶可以選擇文本並複製它。如何QLineEdit的增加QMessageBox提示PyQt5

,但我不能成功。有沒有辦法將QLineEdit添加到QMessageBox或在QMessageBox上創建可複製的文本?

回答

2

QMessageBox.informativeText()QMessageBox.detailedText()QMessageBox.textInteractionFlags()打我發現:

QMessageBox.informativeText()QMessageBox.detailedText()總是選擇,即使QmessageBox.textInteractionFlags()設置爲QtCore.Qt.NoTextInteraction。在文本框中顯示QMessageBox.detailedText()QMessageBox.setTextInteractionFlags()僅作用於QmessageBox.text()。這些文本的使用描述在documentation of QMessageBox。通過標誌,你可以設置文本編輯和/或可選擇的,見enum TextInteractionFlags

這裏可選擇文本的工作示例的QmessageBox.detailedText()

import sys 
from PyQt5 import QtWidgets, QtCore 

class MyWidget(QtWidgets.QWidget): 
    def __init__(self): 
     QtWidgets.QWidget.__init__(self) 
     self.setGeometry(400,50,200,200) 

     self.pushButton = QtWidgets.QPushButton('show messagebox', self) 
     self.pushButton.setGeometry(25, 90, 150, 25) 
     self.pushButton.clicked.connect(self.onClick) 

    def onClick(self): 
     msgbox = QtWidgets.QMessageBox() 
     msgbox.setText('to select click "show details"') 
     msgbox.setTextInteractionFlags(QtCore.Qt.NoTextInteraction) # (QtCore.Qt.TextSelectableByMouse) 
     msgbox.setDetailedText('line 1\nline 2\nline 3') 
     msgbox.exec() 

app = QtWidgets.QApplication(sys.argv) 
w = MyWidget() 
w.show() 
sys.exit(app.exec_()) 
+0

如果我複製粘貼代碼到該作品的空腳本,但是當我試圖把它在我的主腳本我得到這個錯誤:' msgbox.setTextInteractionFlags(QtCore.Qt.NoTextInteraction) AttributeError的: 'NoneType' 對象沒有屬性「setTextInteractionFlags''類開始與此:'類實施例(的QMainWindow): DEF __init __(個體): 超級()。 __init __()' – GLHF

+0

我的工作,並固定。我只是把文本與setText方法。謝謝您的回答,我不知道有這樣的setTtextInteraction()等。如果你可以給對他們在你的答案更多信息這將是很好的未來visiters的方法。 – GLHF