PyQt5 > TextEdit ile veritabanına text formatlı kayıt ekleme

Bir test hazırlama sistemi hazırlıyorum.Soruları ve seçenekleri textedit ile veritabanına text formatıyla (bold, italic) ekledim tabi eklerken textEdit.toHtml ile html kodu şeklinde veritabanına ekleyebiliyorum.Benim sorunum bu soruları python-docx modülü ile word belgesine eklerken çıkıyor.html kodlarını word dosyasına eklerken sadece formatıyla(bold,italic,underline) uygulayarak düz yazı şeklinde eklemesini istiyorum.Bu konuda fikirlerinizi alabilir miyim?

Sorunun ne oldugunu soylememissin ama Microsoft Word dokumanina HTML kodlarinin gectigini tahmin ediyorum?

Italik HEDE yazacagina duz yazi <i>HEDE</i> yaziyor yani?

Eger oyleyse sorunun PyQt5 veya veritabani ile alakasi yok. python-docx kutuphanesi HTML kodlarini taniyip Microsoft Word formatlamasina donusturmuyor.

Kutuphanenin boyle bir ozelligi var mi?
Yoksa olan baska bir kutuphane var mi?
Yoksa en azindan metin formatlayabilen bir kutuphane bulup HTML’i metin formatlamaya elle cevirmek lazim.

Bu arada DOCX Microsoft’a ozel bir format oldugu icin is bosuna zorlasiyor. Acik dokuman formatlari tam olarak bu yuzden varlar; ODT kullanmani tavsiye ederim.

1 Beğeni

Peki ben textedit deki biçimlendirilmiş metni (bold, italic, underline) veritabanına stil özellikleriyle nasıl kaydedebilirim? Textedit in toHtml fonksiyonundan başka bir yöntem var mı?

Var gibi: https://doc.qt.io/qt-5/qtextedit.html

Yok kardeşim oraya baktım.Ne yapmak isteğimi ben madde madde en başından anlatayım.
1-Şimdi öğretmenlerimiz için soruların yer aldığı bir veritabanı hazırlıyorum. Soru metninde veya seçeneklerde bazı kısımlar altı çizili, kalın veya italik oluyor.
2-Soruyu veritabanına eklemek için 6 adet textEdit (soru metni ve 5 tane seçenek için) kullandım.textEdit deki metne butonlarla biçim veriyorum(bold, italik, underline).
3-Soruyu veritabanına biçimiyle kaydetmek için textEdit deki metni toHtml fonksiyonuyla html koduna dönüştürerek veritabanına kaydediyorum.
Normal bir sorunun metnini aşağıdaki gibi veritabanına ekliyor.

textEdit.toHtml() kodu aşağıdaki html kodunu oluşturuyor.

html


4-Amacım öğretmenin veritabanından seçtiği soruları( örneğin 20 soru seçti) word belgesine aktarmak.Ama html olayının içinden çıkamadım.

Var, var.

Bununla da, toHtml ile de veritabanina stil ozellikleriyle kaydedebilirsin. Ucuncu bir opsiyon ise bold metinleri, italik metinleri, vs. tek tek bulup veritabaninda baska tabloya kaydetmek. (Bir tabloda duz metin, baska tabloda onun cesitli yerlerine uygulanacak stiller seklinde.)

Fakat daha once de yazdigim gibi senin problemin metni veritabanina eklemek degil, Microsoft Word belgesine aktarmak. Bu konuda son soylediklerim (ve cevapsiz sorularim) hala gecerli.

Markdown, html etiketlerinin yerine * işareti koyuyor. Sorularına gelince python-docx modülünde böyle bir özellik yok. Bunu tam anlamıyla yapan bir kütüphane bulamadım. PyQt5 i geliştirenler textEdite böyle bir özellik yazdılarsa geri dönüşünü de hesaplamış olmalılar diye düşünüyorum.

Siz biçimlendirilmiş bir metni veritabanına kaydettiğinizde raporlama kısmında nasıl sonuç alıyorsunuz?Yok mu forumda Python uzmanı :slight_smile:

Evet, cunku HTML yerine Markdown formatinda almak istedigimizi soyledik??

Hesapladilar, ve bu iki kere linkledigim sayfada iki ayri yontem olarak yaziyor. Fakat QTextEdit’e geri donusten ne zaman bahsetmeye basladigimizi kacirdim.

Raporlama kismi ne demek?

Herhangi bir seyi veritabanina kaydettigimde tam olarak nasil kaydettiysem oyle aliyorum. Aksi takdirde kullandigim teknolojiye “veritabani” denmiyor.

Uzman ne demek bilmiyorum ama bu kadar basit bir soruya nasil bir katkida bulunacak?

Simdiye kadar varsayimda bulunmak istemedim ama sanirim temel bir yerlerde bilgi eksikligi var ve o yuzden anlasamiyoruz. Bu “veritabani” veya “word dokumani” (sic) kadar basit bir seyin tanimi bile olabilir.

Nasil yapicaz?

Bastan alalim: Amac sorulari veritabanina kaydetmek mi (baslik oyle diyor), bir Microsoft Word DOCX dosyasina aktarmak mi (soru oyle diyor), QTextEdit’te gostermek mi? (“geri donusunu hesaplamis olmalilar” oyle ima ediyor)

Bir ust seviyede de olabilir: “Ogrencilerimin okuyabilecekleri bir sekilde, okuldaki Windows makinelerinden test ciktisi almak.”

Veritabanına kaydetmekte, silmede, güncellemede problem yok.Onları hallettim zaten. Veritabanındaki html olarak kaydedilmiş veriyi, word belgesine yorumlanmış şekilde eklemek istiyorum.html kodunu değil de derlenmiş halini.Başlıkta eklemel olarak yazmışım doğru ama açıklama kısmında problemimi yazdım.

Aşağıdaki resim veritabanındaki kayıtlardan birine ait.

image

Veritabanına kaydetmeden önceki hali ise şu TextEditdeki:
soru
Bu resimde gördüğün gibi soru kısmı bold.

Veritabanına eklemiş olduğum ilk görüntünün normal derlenmiş halini, word belgesine veritabanından sorguyla çektikten sonra eklemek istiyorum.Bir türlü anlaşamadık.

@aib defalarca tekrarladı ama tam olarak anlaşılmadı sanırım. Şuan mümkün çözümler şunları içeriyor:

  • Açık formatlı bir döküman türü kullanmak, kullanılamıyorsa sebebini belirtebilirsiniz. Belki başka bir çözüm bulunur.
  • Python için HTML’yi docx formatına çevirecek bir kütüphane bulmak. (Bu veya bu iş görebilir)
  • HTML’yi docx’e çevirecek kodu sizin yazmanız (eğer işiniz olan taglar <i>, <br>, <p>, <u>, <b> dan ibaretse çok zor olmaz diye tahmin ediyorum. Şuradan bir başlangıç yapılabilir)
  • Çevirme işini elle yapmak (sanırım konu dışı).
  • HTML’yi docx formatına çevirmek için çevrimiçi bir servis kullanmak (web otomasyonu veya bir API da kullanılabilir.)
  • Eğer docx yerine doc formatını kullanmak sorun çıkarmayacaksa buradaki çözümü kullanmak (denediğim kadarı ile italik, kalın ve altı çizili yazılarda problem olmuyor; ama Türkçe karakterler düzgün çıkmadı. Encoding değiştirilmeye çalışılabilir, meta charset işe yarıyor gibi.)

Son çözümün docx hali de bulunuyor olabilir, ben rastlamadım.

Şimdi denedim de düzgün bir HTML dosyasının uzantısını .doc yapınca da son çözüm ile benzer bir sonuç elde ediyoruz.

1 Beğeni

Bu yazdığınız yöntemleri internetten araştırıp denedim zaten. Teşekkür ederim ilginiz için.

Hepsini denediğiniz halde hiçbiri ihtiyacınızı karşılamadı mı?

Ekrem bey, projenin takıldığım noktasını sizle paylaşayım.Siz bakar mısınız?
1-Sizden metnin bazı bölümlerine stil vererek bir soru eklemenizi rica ediyorum.
2-Word belgesi oluştur butonuna tıkladığımda veritabanındaki soruları word belgesine (openoffice-libreoffice belgesi de olabilir) aktaracak.