2012-01-17 36 views
6

Tôi có một số QLabel có chứa văn bản đa dạng thức.
Tôi chỉ muốn trích xuất văn bản thực tế (hiển thị) 'từ QLabel và không có mã nào để định dạng.
Về cơ bản, tôi cần một hàm tương tự với phương thức '.toPlainText' của Qt Widgets khác.Nhận văn bản thuần tuý từ một nhãn hiệu có chứa văn bản có dạng là

Tôi không thể chỉ đơn giản gọi số .text() và chuỗi thao tác các thẻ html như được đề xuất trong chủ đề này Get plain text from QString with HTML tags, vì trả lại QString chứa tất cả các số <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> vô nghĩa.

Làm cách nào để trích xuất văn bản thuần túy?

(Tôi mở cửa cho phương pháp bất kỳ, thậm chí nếu như gián tiếp; chức năng Pre-hiện chuyển đổi html để văn bản đơn giản.)

Cảm ơn!

Specs:
python 2.7.2
PyQt4
Windows 7

+0

Tôi chưa tự mình thử, nhưng có vẻ như 'QTextCodec' là những gì bạn cần (tài liệu tại http://developer.qt.nokia.com/doc/qt-4.8/qtextcodec.html). – TonyK

+0

RTF dường như không phải là một mã hóa được hỗ trợ (trừ khi tôi thiếu một cái gì đó). Không sao, tôi đã tìm thấy một công việc lộn xộn xung quanh –

+0

Bạn không thể chỉ xử lý Văn bản có dạng Qt dưới dạng html? Tài liệu Qt tại đây (http://doc.qt.nokia.com/4.7-snapshot/qml-text.html) cho biết: "Văn bản đa dạng thức được xác định bằng cách sử dụng đánh dấu kiểu HTML". – TonyK

Trả lời

10

Dùng QTextDocument để thực hiện chuyển đổi:

doc = QtGui.QTextDocument() 
doc.setHtml(label.text()) 
text = doc.toPlainText() 
+0

Oh yeah, bit trực tiếp hơn so với phương pháp của tôi. Xấu hổ tôi đã bỏ lỡ điều đó: | –

1

Dưới đây là một tác phẩm lộn xộn xung quanh (cho python - PyQt)

def Extract_PlainText(label): 
    Rtf_text = label.text() 
    Temp_Obj = QtGui.QTextEdit() 
    Temp_Obj.setText(Rtf_text) 
    Plain_text = Temp_Obj.toPlainText() 
    del Temp_Obj 
    return Plain_text 

Lấy cảm hứng từ http://bytes.com/topic/net/answers/707370-convert-rtf-plain-text

+0

Ofcourse 'del Temp_Obj' là hoàn toàn không cần thiết, nhưng tôi thấy nó quaint –

Các vấn đề liên quan