2010-11-01 4 views
1

У меня только что был первый курс по программированию в университете, и в течение следующих трех месяцев у меня нет дополнительных классов программирования, поэтому я решил сделать небольшой проект во время этого «перерыва».Есть ли способ добавить выделенный текст в переменную pyqt?

Что я пытаюсь сделать, это программа редактирования для меньшей Wiki, над которой я работал. Предполагается, что пользователям будет проще использовать такие вещи, как шаблоны, а также иметь мастер, который поможет пользователю создавать базовые страницы. Я разговаривал с некоторыми старшими учениками, и они рекомендовали pyqt для графического интерфейса программного обеспечения.

Теперь к проблеме, и я чувствую, что это действительно грязный взлом: Мое решение прямо сейчас состоит в использовании встроенных команд копирования и вставки, проблема в том, что прямо сейчас, если я просто нажму кнопку для полужирного , без маркировки текста, я получаю: '' 'текст в настоящее время находится в буфере обмена' '', и я просто хочу, чтобы он добавил '' '' ''.

Вот (важный) код, я, очевидно, вызываю 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 

Так кто-нибудь знает, как я могу назначить выделенный текст на х? Или есть еще одно решение, которое лучше?

ответ

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_() 

К сожалению, я не мог найти способ без манипуляции с буфером обмена. Надеюсь это поможет.

Смежные вопросы