Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 14, 2009 00:39:54

idler
От:
Зарегистрирован: 2009-07-05
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

string->QString = крякозябры

Пытаюсь сделать контекстное меню для QSystemTrayIcon

Конфигурация в ini-файле:

[1]
name="Редактор"
cmd="/usr/bin/kate"

[2]
name="еще редактор"
cmd=/usr/bin/vim
В меню вместо русских имен крякозябры.
системная локаль ru_RU.UTF-8
Debian Linux
python 2.5.4

Код:
class Tray(QtGui.QMainWindow):
def __init__(self, win_parent = None):
QtGui.QMainWindow.__init__(self, win_parent)
self.createIcon()

def createIcon(self):
self.icon = QtGui.QSystemTrayIcon()
self.icon.setIcon(QtGui.QIcon('Bug.png'));
self.conf = self.loadConfig(os.environ["PROFILEHOME"]+"/"+".pytray.ini")
pass;
#print self.conf
self.actions = list()
self.slots = list()
self.menu = QtGui.QMenu()
self.createActions()
self.icon.setContextMenu(self.menu)
self.icon.show();

def createActions(self):
for name,sect in self.conf.items():
#self.actions[name] = QtGui.QAction(sect[name]["name"],self)
#print name
#print "))_"
#print sect["name"]
#print "******************"
#self.actions.append(QtGui.QAction(sect["name"],self))
self.menu.addAction(QtCore.QString(sect["name"]));




def loadConfig(self,filename):
"""Convert an INI file to a dictionary"""
import ConfigParser
config = ConfigParser.ConfigParser()
config.read(filename)
result = {}
for section in config.sections():
if section not in result:
result[section] = {}
for option in config.options(section):
value = config.get(section, option)
result[section][option] = value
return result

def saveConfig(self, iniFile='config.ini'):
"""Convert an dictionary to a INI file"""
import ConfigParser
config = ConfigParser.ConfigParser()
config_dict = self.data
for section, values in config_dict.items():
config.add_section(section)
for var_name, var_value in values.items():
config.set(section, var_name, var_value)
config.write(open(iniFile, 'w'))

app = QtGui.QApplication(sys.argv)
#The Main window
main_window = Tray()
#main_window.show()
# Enter the main loop
app.exec_()



Офлайн

#2 Окт. 14, 2009 13:44:01

Enchantner
От:
Зарегистрирован: 2009-02-11
Сообщения: 442
Репутация: +  0  -
Профиль   Отправить e-mail  

string->QString = крякозябры

а если unicode() на параметр при подгрузке? Плюс для русских названий в Qt есть функция энкодирования:
QtGui.QApplication.translate(“MainWindow”, text, None, QtGui.QApplication.UnicodeUTF8)



Офлайн

#3 Окт. 14, 2009 17:38:35

pasaranax
От:
Зарегистрирован: 2009-06-13
Сообщения: 574
Репутация: +  0  -
Профиль   Отправить e-mail  

string->QString = крякозябры

Qt принимает только религиозно правльный unicode() :)



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version