有没有办法将标记文本添加到pyqt中的变量中?

时间:2010-11-01 00:16:56

标签: python pyqt

我刚刚在大学开设了第一门编程课程,接下来的三个月我没有额外的编程课程,所以我决定在这个“休息”期间做一个小项目。

我要做的是为我以前工作过的较小的Wiki编辑程序。它假设使用户更容易使用模板之类的东西,并且还有一个向导来帮助用户制作基本页面。我和一些年龄较大的学生交谈,他们推荐pyqt用于软件的GUI。

现在问题,我觉得这是一个非常脏的黑客: 我现在的解决方案是使用内置的复制和粘贴命令,问题是,如果我只是单击按钮以获得粗体,而不标记文本,我得到: '''当前在剪贴板中的文字'''我只是希望它添加''''''。

这是有问题的(重要)代码,当按下/按键时,我显然会调用addBold。

self.textEdit = QtGui.QTextEdit()
def.addBold(self):
   self.textEdit.copy()
   self.textEdit.insertPlainText("\'\'\'")
   self.textEdit.paste()
   self.textEdit.insertPlainText("\'\'\'")

我宁愿拥有的代码如下:

x=markedText
if not x:
  self.textEdit.insertPlainText("\'\'\' \'\'\'")
else:
  self.textEdit.insertPlainText("\'\'\'"+x+"\'\'\'")
  x = None

那么有谁知道如何将标记文本分配给x?或者还有另一种更好的解决方案吗?

1 个答案:

答案 0 :(得分:1)

from PyQt4.QtGui import *
from PyQt4.QtCore import SIGNAL

class Widget(QWidget): 
    def __init__(self, parent=None): 
        QWidget.__init__(self) 

        self.textedit = QTextEdit()
        self.clip = QApplication.clipboard()
        self.button = QPushButton("Bold")         
        self.connect(self.button, SIGNAL("clicked()"), self.addBold)

        layout = QVBoxLayout()
        layout.addWidget(self.textedit) 
        layout.addWidget(self.button)
        self.setLayout(layout)

    def addBold(self):
        self.clip.clear()
        self.textedit.copy()
        currentText = self.clip.text()
        self.textedit.insertPlainText("'''%s'''" % currentText)

app = QApplication([])
widget = Widget() 
widget.show() 
app.exec_()

可悲的是,在没有操纵剪贴板的情况下我找不到办法。希望这会有所帮助。

相关问题