2013-02-21 59 views
1

有時我需要用增加的數字製作多個代碼副本。 在形式我編碼,我需要做的12個複選框,每一個都需要下面的代碼向上:AttributeError:'QTextEdit'對象沒有任何屬性'text'

self.checkBox1 = QtGui.QCheckBox() 
    self.checkBox1.setGeometry(QtCore.QRect(20, 20, 70, 17)) 
    self.checkBox1.setObjectName(_fromUtf8("checkBox1")) 

下面的腳本使我避免手動更改號碼,每一個無聊的任務複選框。 我只是將上面的3行復制到windows剪貼板中,然後... 我在窗體的第一個字段中插入「checkBox」,在第二個字段中插入「1」,在第三個字段中插入12。 當我點擊「確定」按鈕時,3行的12個順序編號的副本出現在表格的第4個字段中。 我希望這可以爲其他人提供一些幫助。 馬克

這裏是我的代碼:

# -*- coding: latin-1 -*- 
""" 
duplicate_text_with_incrementing_nos_for_programming_and_paste_to_clipboard.py 
Harvest text from clipboard and run functions below, and then paste back to clipboard 

""" 

import sys 
from PyQt4 import QtCore 
from PyQt4 import QtGui 
from PyQt4.QtCore import (Qt, SIGNAL) 
from PyQt4.QtGui import (QApplication, QDialog, QHBoxLayout, QLabel, 
     QPushButton) 


class Form(QDialog): 

    def __init__(self, parent=None): 
     super(Form, self).__init__(parent) 

     self.initUI() 

    def initUI(self): 
     okButton01 = QtGui.QPushButton("OK") 
     cancelButton01 = QtGui.QPushButton("Cancel") 
     okButton01.clicked.connect(self.fn_okButton01_clicked) 
     cancelButton01.clicked.connect(QtCore.QCoreApplication.instance().quit) 
     self.cancelButton01 = cancelButton01 

     prefix_label = QtGui.QLabel('Prefix') 
     digit_label = QtGui.QLabel('Digit') 
     iterations_label = QtGui.QLabel('Iterations') 
     clip_label = QtGui.QLabel('Clip') 

     prefixEdit = QtGui.QLineEdit() 
     digitEdit = QtGui.QLineEdit() 
     iterationsEdit = QtGui.QLineEdit() 
     reviewEdit = QtGui.QTextEdit() 

     self.prefix_label = prefix_label 
     self.digit_label = digit_label 
     self.iterations_label = iterations_label 
     self.clip_label = clip_label 

     self.prefixEdit = prefixEdit 
     self.digitEdit = digitEdit 
     self.iterationsEdit = iterationsEdit 
     self.reviewEdit = reviewEdit 

     hbox01 = QtGui.QHBoxLayout() 
     hbox01.addWidget(prefix_label) 
     hbox01.addWidget(prefixEdit) 

     hbox01.addWidget(digit_label) 
     hbox01.addWidget(digitEdit) 
     hbox01.addWidget(iterations_label) 
     hbox01.addWidget(iterationsEdit) 

     hbox03 = QtGui.QHBoxLayout() 
     hbox03.addWidget(clip_label) 
     hbox03.addWidget(reviewEdit) 

     self.reviewEdit.setText(fn_getText()) 

     hbox00 = QtGui.QHBoxLayout() 
     hbox00.addStretch(1) 
     hbox00.addWidget(okButton01) 
     hbox00.addWidget(cancelButton01) 

     vbox0 = QtGui.QVBoxLayout() 
     vbox0.addLayout(hbox01) 
     vbox0.addStretch(1) 
     vbox0.addLayout(hbox03) 
     vbox0.addStretch(1) 
     vbox0.addLayout(hbox00) 

     self.setLayout(vbox0) 

     self.setGeometry(300, 300, 600, 300) #class PySide.QtCore.QRectF(left, top, width, height) http://srinikom.github.com/pyside-docs/PySide/QtCore/QRectF.html#PySide.QtCore.QRectF 
     self.setWindowTitle('Duplicate Code Strings W/Increasing Numbers') 
     self.show() 

    def fn_okButton01_clicked(self): 
     prefixEditText = str(self.prefixEdit.text()) 
     digitEditText = str(self.digitEdit.text()) 
     iterationsEditText = str(self.iterationsEdit.text()) 

     nutext = prefixEditText + ' ' + digitEditText + ' ' + iterationsEditText 
     print 'Line 89: nutext = ' + str(nutext) 
     original_clip = self.reviewEdit.toPlainText() # PySide.QtGui.QLineEdit.text(), http://srinikom.github.com/pyside-docs/PySide/QtGui/QLineEdit.html 

     txt2paste2clipbd = fn_duplicate_code_with_increments(texte=str(original_clip), no_of_copies=str(iterationsEditText), string_b4_digits=str(prefixEditText), digits=str(digitEditText)) 

     self.reviewEdit.setPlainText(txt2paste2clipbd) 

     setWinClipText(txt2paste2clipbd) 

     #self.deleteLater() 
     #event.accept() #http://www.qtcentre.org/threads/20895-PyQt4-Want-to-connect-a-window-s-close-button 
     #self.destroy() 



def formm(): 
    app = QApplication(sys.argv) 
    form = Form() 
    form.show() 
    app.exec_() 


def fn_getText(): 
    # get text from clipboard 
    win32clipboard.OpenClipboard() 
    text = win32clipboard.GetClipboardData(win32clipboard.CF_TEXT) 
    win32clipboard.CloseClipboard() 
    return text 


def setWinClipText(aString): 
    # Send text to clipboard 
    import win32clipboard 
    win32clipboard.OpenClipboard() 
    win32clipboard.EmptyClipboard() 
    win32clipboard.SetClipboardText(aString) 
    win32clipboard.CloseClipboard() 


def fn_duplicate_code_with_increments(texte, no_of_copies, string_b4_digits, digits): 
    """ 
    to do: combine args 2 and 3, and use re module to determine with chars are the digits to increment 
    """ 
    import re 
    import string 
    i = 0 
    tempclipDup = texte[:] 
    temp_instance = '' 
    accumulator = '' 
    while i <= int(no_of_copies) - 1: 
     i +=1 
     orig_str = string_b4_digits + str(digits) 
     replact_st = string_b4_digits + str(i) 
     temp_instance = tempclipDup.replace(orig_str, replact_st) 
     if len(accumulator) > 2: 
      accumulator = accumulator + '\n' + temp_instance 
     else: 
      accumulator = temp_instance 

    return accumulator 



if 1 == 1: 
    import os 
    import sys 
    import subprocess 
    import win32clipboard 
    import win32con 

    fn_operation_log = '' 
    arg_sent_2this_script = '' 
    alternative = 1 
    if alternative == 1: 
     formm() 
    elif alternative == 2: 
     txt2paste2clipbd = fn_duplicate_code_with_increments(texte=fn_getText(), no_of_copies=3, string_b4_digits='hbox', digits=1) 
     setWinClipText(txt2paste2clipbd) 

回答

3

該屬性稱爲plainText爲的QTextEdit。

(與單行QLineEdit相反,它具有文本屬性)