Есть ли способ добавить помеченный текст в переменную в Pyqt? - PullRequest
1 голос
/ 01 ноября 2010

Я только что прошел свой первый курс по программированию в университете, и в течение следующих трех месяцев у меня нет дополнительных классов по программированию, поэтому я решил сделать небольшой проект во время этого "перерыва".

То, что я пытаюсь сделать, - это программа редактирования для меньшей вики, над которой я работал.Предполагается, что пользователям будет проще использовать такие вещи, как шаблоны, а также имеется мастер, помогающий пользователю создавать базовые страницы.Я поговорил с некоторыми старшими учениками, и они порекомендовали 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

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

1 Ответ

1 голос
/ 02 ноября 2010
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_()

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...