2010-11-01 72 views
1

我刚刚在大学接受了第一门课程,在接下来的三个月里我没有额外的编程课程,所以我决定在这个“休息”期间做一个小型项目。有没有办法将标记文本添加到pyqt中的变量?

我想要做的是一个我曾经工作过的较小维基的编辑程序。假设使用户更容易使用模板之类的东西,并且还有一个向导来帮助用户制作基本页面。我和一些年长的学生交谈,他们推荐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
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_() 

很遗憾,我找不到没有操作剪贴板的方法。希望这可以帮助。

相关问题