Найти - Пользователи
Полная версия: PyQt4 - изменение текста стандартных (Абстрактных) кнопок (QtGui.QMessageBox.Yes например) QMessageBox'а
Начало » GUI » PyQt4 - изменение текста стандартных (Абстрактных) кнопок (QtGui.QMessageBox.Yes например) QMessageBox'а
1
wizard_master
Добрый день товарищи программисты!
Задался таким вопросом: Как можно изменить текст на абстрактных кнопках (QtGui.QMessageBox.Yes, QtGui.QMessageBox.No, QtGui.QMessageBox.Cancel). Хочу чтобы надписи были русскими, т.к. не все конечные пользователи знают что такое Cancel

Вот например у меня задается вопрос пользователю, соответственно окошко выдается сразу, т.е. к нему какие-либо методы применить не получается.

reply = QtGui.QMessageBox.question(self, u"Вопрос", u"Вы уверены?", QtGui.QMessageBox.Yes | QtGui.QMessageBox.No | QtGui.QMessageBox.Cancel)

Как можно изменить текст на этих абстрактных кнопках? Или только в исходниках Qt это можно сделать?
Rodegast
Я примерно так переводил:
dirdialog = QtGui.QFileDialog(self)
dirdialog.setLabelText(dirdialog.LookIn, u"Текущий Каталог")
dirdialog.setLabelText(dirdialog.FileName, u"Каталог")
dirdialog.setLabelText(dirdialog.FileType, u"Тип Файла")
dirdialog.setLabelText(dirdialog.Accept, u"Выбрать")
dirdialog.setLabelText(dirdialog.Reject, u"Отмена")
if dirdialog.exec_():
	return os.path.abspath(unicode(dirdialog.selectedFiles()[0])).replace("//","/")+"/"
else: return ""
reclosedev
Чтобы любой текст добавить:
http://www.qtcentre.org/threads/28739-QMessageBox-Text-in-the-buttons

Если просто нужны кнопки на русском во всех стандартных диалогах, нужно добавить файл локализации
\Python\Lib\site-packages\PyQt4\translations\qt_ru.qm
и загружать его с помощью QTranslator
wizard_master
Rodegast
Я примерно так переводил:
Спасибо, возьму на заметку такой способ. Но помимо этих кнопок есть еще стандартные меню и т.д.


reclosedev
Чтобы любой текст добавить:http://www.qtcentre.org/threads/28739-QMessageBox-Text-in-the-buttonsЕсли просто нужны кнопки на русском во всех стандартных диалогах, нужно добавить файл локализации\Python\Lib\site-packages\PyQt4\translations\qt_ru.qmи загружать его с помощью QTranslator
А вот это уже интереснее, спасибо!
По поводу QTranslator можете поподробней написать? Где именно в коде его инициализировать и загружать файл перевода?
wizard_master
reclosedev
загружать его с помощью QTranslator
А, я понял походу:

if __name__ == '__main__':
	app = QtGui.QApplication(sys.argv)
	translator = QTranslator()
	translator.load(u'qt_ru', u'C:\Python27\Lib\site-packages\PyQt4\translations') #как я понял, расширение файла (.qm) Qt сам добавит?
	app.installTranslator(translator)
	
	window = MainWindow()
	window.show()
	
	sys.exit(app.exec_())
UPD:
А дальше что? Я думал он сам переведет кнопки стандартные и меню…
reclosedev
Обратные слэши в путях Win до добра не доводят
In [1]: print u'C:\Python27\Lib\site-packages\PyQt4\translations'
C:\Python27\Lib\site-packages\PyQt4     ranslations
Нужно использовать или сырые строки
ur'C:\Python27\Lib\site-packages\PyQt4\translations'
или прямые слэши.

А еще лучше, скопировать qt_ru.qm к себе и использовать путь относительно главного скрипта, особенно если в дальнейшем программа будет передаваться, и особенно если в виде .exe.
wizard_master
reclosedev
Обратные слэши в путях Win до добра не доводят
Спасибо огромное!!! Все получилось
Вот, может кому пригодится.
Для перевода стандартных кнопок в диалогах / стандартных меню и т.п. в PyQt используем класс QTranslator и файл перевода, поставляемый с PyQt:
if __name__ == '__main__':
	app = QtGui.QApplication(sys.argv)
	translator = QTranslator()
	#скопировал qt_ru.qm себе в папку со своим скриптом в подпапку lib. В пути использовать прямые слэши!
	#qt_ru.qm брал из C:\Python27\Lib\site-packages\PyQt4\translations\
	translator.load(u'qt_ru', u'./lib/') #расширение файла (.qm) Qt сам добавит.
	app.installTranslator(translator)
	
	settingsWindow = SettingsWindow()
	settingsWindow.show()
	sys.exit(app.exec_())

P.S. как я понял он из-за обратных слэшей в пути \t воспринял как табуляцию, т.е. как ему положено) На будущее буду иметь ввиду! А то у меня везде пути с обратными слэшами
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB