QApplication,QClipboard,mimedataで、貼り付けをした後にデータを復元すると、必ずテキストが黒くなる。
自分のソフト外の適当なウェブサイトなどから、文章をコピペして、
それをテキストエディタで保存して、再度復元したいと思っています。
例えばなのですが、このサイトからタイトル部分をコピペしてきました。
Matahari Wikipedia
Key_1を押して、その内容をセーブしました。
その後、再起動を行い、前のデータを復元してみました。
すると、常に、ロードしたテキストは真っ暗になります。
mimedata.html()を調べてみますと、
<!--StartFragment--><span style="display: inline !important; float: none; background-color: transparent; color: rgb(0, 0, 0); font-family: "Linux Libertine","Georgia","Times",serif; font-size: 28.8px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; line-height: 37.44px; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;">Matahari</span><!--EndFragment-->
色のところが、 (0,0,0). つまり、黒色がデフォルトで指定されています。
だから、この部分を書き換えればいいじゃないかと思ったんで、
clipboard = QtGui.QApplication.clipboard()
html = clipboard.mimeData().html()
print(html)
html = html.replace("color: rgb(0, 0, 0);","color: rgb(255, 255, 255);")
clipboard.mimeData().setHtml(html)
<!--StartFragment--><span style="display: inline !important; float: none; background-color: transparent; color: rgb(255, 255, 255); font-family: "Linux Libertine","Georgia","Times",serif; font-size: 28.8px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; line-height: 37.44px; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;">Matahari</span><!--EndFragment-->
プリント文で打ちだしたら、確かに(255,255,255)になり、
白になっているはずなのですが、こうして、再度書き換えたhtmlの内容をセットして、再度ロードしてみましたが、結果は相変らずでした。
背景が真っ黒にならないようにしたいのですが、どうすればいいんでしょうか?
こちらが、実行可能なサンプルコードです。
from PySide import QtGui
from PySide import QtCore
import sys
import os
class TextEdit(QtGui.QTextEdit):
def __init__(self,parent=None):
super(TextEdit,self).__init__(parent=None)
def keyPressEvent(self,event):
if event.key() == QtCore.Qt.Key_1:
self.save()
return
elif event.key() == QtCore.Qt.Key_2:
self.load()
return
elif event.key() == QtCore.Qt.Key_V:
self.copy_paste()
return
return QtGui.QTextEdit.keyPressEvent(self,event)
def save(self):
print(os.getcwd()+"copy_paste_test.dat")
file = QtCore.QFile(os.getcwd()+"copy_paste_test.dat")
file.open(QtCore.QFile.ReadWrite)
out = QtCore.QDataStream(file)
out.writeQString(self.toHtml())
file.close()
def load(self):
file = QtCore.QFile(os.getcwd()+"copy_paste_test.dat")
file.open(QtCore.QFile.ReadOnly)
out = QtCore.QDataStream(file)
self.insertHtml(out.readQString())
file.close()
def copy_paste(self):
clipboard = QtGui.QApplication.clipboard()
self.insertFromMimeData(clipboard.mimeData())
def main():
try:
QtGui.QApplication([])
except Exception as e:
print(e)
textedit = TextEdit()
textedit.show()
sys.exit(QtGui.QApplication.exec_())
if __name__ == "__main__":
main()
実行環境;PySide 1.2.4 Python 3.6.5 Windows10