我正在尝试找到一种方法来制作一个不错的“复制到剪贴板”按钮函数,在这个函数中,我可以从QTextEdit小部件中的其他线程复制文本值。
我从其他线程中提取值,并将它们显示在QTextEdit小部件中,我一直试图用一个按钮成功地将QTextEdit的内容复制到剪贴板上,但我能做到的唯一方法是下面的代码。
不要按第二个按钮来复制内容。br'
有没有某种方法可以使用get_button
按钮存储第一个请求中的值,并且可以使用copy按钮进行复制,而不必再次进行相同的调用?谢谢。在
from PyQt4 import QtCore, QtGui
import sys
class WorkerThread(QtCore.QThread):
get_String = QtCore.pyqtSignal(str)
def __init__(self):
super(WorkerThread, self).__init__()
def run(self):
self.get_String.emit('Some text.')
class GUI(QtGui.QWidget):
def __init__(self):
super(GUI, self).__init__()
self.get_Button = QtGui.QPushButton('Get')
self.c_Button = QtGui.QPushButton('Copy')
self.text_Box = QtGui.QTextEdit(self)
vbox = QtGui.QVBoxLayout(self)
vbox.addWidget(self.get_Button)
vbox.addWidget(self.c_Button)
vbox.addWidget(self.text_Box)
vbox.addStretch()
self.setGeometry(300, 300, 300, 300)
self.show()
self._thread = WorkerThread()
self.get_Button.clicked.connect(self.doIt)
self._thread.get_String.connect(self.text_Box.append)
self.c_Button.clicked.connect(self.copy_Stuff)
def copy_Stuff(self):
self.clipboard = QtGui.QApplication.clipboard()
self._thread.get_String.connect(self.clipboard.setText)
self._thread.start()
def doIt(self):
self.text_Box.clear()
self.text_Box.setText('')
self._thread.start()
def main():
app = QtGui.QApplication(sys.argv)
gui = GUI()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
结果发现这比我最初想象的要容易得多。我对如何正确地复制文本感到困惑,因为我在其他示例和帖子中看到了不同的复制方式。在阅读了一段时间的文档并试图了解更多关于pyqt的知识后,我发现使用这两行代码很简单。。。在
有了这两行和我的按钮,它似乎复制了QTextEdit小部件的所有内容,这正是我真正需要的。这是我最后的工作代码,以防其他人发现它有用。在
^{pr2}$这个代码示例显示了一个简单的工作线程,该线程使用signal向main返回一个值,在qtexted小部件中显示该值,以及如何通过单击一个按钮来复制QTextEdit小部件的所有内容。在
相关问题 更多 >
编程相关推荐