PDA

View Full Version : مشکل درج یا نمایش کاراکترهای فارسی در ویجت های Qt



ASedJavad
دوشنبه 18 آبان 1394, 20:28 عصر
سلام تو فروم Qt این سؤال (http://barnamenevis.org/showthread.php?512009-%D9%85%D8%B4%DA%A9%D9%84-%D8%AF%D8%B1%D8%AC-%DB%8C%D8%A7-%D9%86%D9%85%D8%A7%DB%8C%D8%B4-%DA%A9%D8%A7%D8%B1%D8%A7%DA%A9%D8%AA%D8%B1%D9%87%D 8%A7%DB%8C-%D9%81%D8%A7%D8%B1%D8%B3%DB%8C-%D8%AF%D8%B1-%D9%88%DB%8C%D8%AC%D8%AA-%D9%87%D8%A7%DB%8C-Qt) رو پرسیدم که:

من از Qt نسخه 5.5 و 5.4 استفاده کردم و تو درج و نمایش کاراکترهای خاص فارسی تو ویجتهای نمایش متنش (ویجت هایی مثل QlineEdit , QTextBrowser , ...) این مشکل رو دارم که مثلا کاراکتری مثل alt + 0254 یا alt +0157 که برای درج نیم‌فاصله بکار می‌رن، یا مثلا ctrl+shift+1 که برای درج چسبیدگی مجازی یا ctrl+shift+2 که برای درج فاصله مجازی بکار میرن، در این ویجت ها درج نمیشن. البته میشه با بررسی تک تک رویدادهای صفحه کلید، این مشکل رو حل کرد که البته کار نسبتا پر دردسری است.
یک مشکل دیگه هم استفاده از کاراکتر "کشیده یا همون shift + j هست که تحت هیچ شرایطی ندیدم که این ویجت ها بتونن درست نمایش بدنش. مثلا "ســـلام" رو به این شکل نشون میدن: "س‌---لام"

البته درستش اینه که بگم من از pyQt استفاده کردم و نه Qt. حالا سؤال من اینه که آیا این دو مورد، مشکلِ pyQt هست یا مشکل خود Qt و اگر مشکل Qt هست، راه حل مناسبی هم داره یا نه؟

و این طور جواب دادن که:


متاسفانه کامپایلر MSVC به طور پیشفرض به خوبی از استاندارد utf-8 پشتیبانی نمیکند، پیشنهاد من اینه از MinGW استفاده کنید و یا اگر میخواهید از همان MSVC استفاده کنید از پیش پردازنده زیر استفاده کنید:


#pragma execution_character_set("utf-8")


من بارها با این مشکل مواجه شدم و با استفاده از این پیش پردازنده در کامپایلر MSVC مشکلم حل شده.



حالا سؤال اینه که معادل این راه حل، تو پایتون چی میشه؟

n.nowroozi
سه شنبه 19 آبان 1394, 08:06 صبح
'your string'.encode('utf8')
شاید این باشه؟!

ASedJavad
سه شنبه 19 آبان 1394, 10:51 صبح
نه این نیست. مشکلش اساسی تر از این حرفاست.

َAhmad Hamzeei
سه شنبه 19 آبان 1394, 16:31 عصر
نه این نیست. مشکلش اساسی تر از این حرفاست.

من تست کردم به نظر مشکل از Qt5 هست، اینم لینک مشکل:

https://bugreports.qt.io/browse/QTBUG-48880

ویندوز 8 با پایتون 3.4.3 و PyQt 5.5
136617


ویندوز xp با پایتون 2.7.10 و PyQt 4.11.4
136618

ابونتو 14.04 به ترتیب
Python 2.7.6 PyQt 4.10.4
Python 3.4.0 PyQt 4.10.4
Python 3.4.0 PyQt 5.2.1

136619

ویرایش: تو تلگرام که با Qt5 نوشته شده، هم همین مشکل هست:

136620

ASedJavad
سه شنبه 19 آبان 1394, 16:58 عصر
من تست کردم به نظر مشکل از Qt5 هست، اینم لینک مشکل:

https://bugreports.qt.io/browse/QTBUG-48880

ویندوز 8 با پایتون 3.4.3 و PyQt 5.5
136617


ویندوز xp با پایتون 2.7.10 و PyQt 4.11.4
136618

ابونتو 14.04 به ترتیب
Python 2.7.6 PyQt 4.10.4
Python 3.4.0 PyQt 4.10.4
Python 3.4.0 PyQt 5.2.1

136619

ویرایش: تو تلگرام که با Qt5 نوشته شده، هم همین مشکل هست:

136620



ممنون از شما.
اون مشکل عدم درج کاراکترهای خاص هم مشکل Qt5 هست؟

َAhmad Hamzeei
سه شنبه 19 آبان 1394, 17:04 عصر
ممنون از شما.
اون مشکل عدم درج کاراکترهای خاص هم مشکل Qt5 هست؟

والا چون مثلا ctrl+shift+2 تو تلگرام هم کار نمیکنه من حس میکنم مشکل از Qt5 باشه.
ولی برای اطمینان کامل دوستان qt کار باید تست کنن و نظر بدن.