2013-02-21 883 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相反,它具有文本属性)