2010-11-01 74 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_() 

很遺憾,我找不到沒有操作剪貼板的方法。希望這可以幫助。

相關問題