crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в PySide и QTextStream
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Litkevich Yuriy Дата 29.5.2011, 19:27
 
Цитата(igor_bogomolov @ 29.5.2011, 20:46) *
Не вижу ни какого противоречия. В python так же как и в С++ есть перегрузка операторов.
перегрузка не означает, что можно делать так, чтобы оператор делал не свою работу.
Цитата(Litkevich Yuriy @ 29.5.2011, 18:24) *
def __lshift__ (s)
def __rshift__ (, arg__2
def __*сдвиг__ (...)
вот его смысл.

Т.е. плохо, когда логика оператора нарушается
igor_bogomolov Дата 29.5.2011, 17:46
 
Цитата(Litkevich Yuriy @ 29.5.2011, 16:24) *
Но походу это не правильное решение в PySide/PyQt, т.к. противоречит самому Питону.
Не вижу ни какого противоречия. В python так же как и в С++ есть перегрузка операторов. Просто синтаксически она выглядит несколько иначе.
Litkevich Yuriy Дата 29.5.2011, 15:24
 
Цитата(igor_bogomolov @ 29.5.2011, 16:06) *
перегруженные операторы потоков
я в бумажной книжке по питону смотрел, там эти операторы обозваны как операторы сдвига, да и на названия методов соответсвующие.

Вообще у меня они действительно работают.
        s  = QTextStream(outFile)
        for item in outputList:
            #print item
            s << item
            s << '\r\n'
Но походу это не правильное решение в PySide/PyQt, т.к. противоречит самому Питону.
igor_bogomolov Дата 29.5.2011, 13:06
  У меня нет PySide (надо будет тоже скачать, посмотреть что получилось), поэтому проверить не могу. Но судя по документации все должно работать.
И в документации пример именно на python, приглядись к нему по внимательнее.
data = QFile("output.txt")
if data.open(QFile.WriteOnly | QFile.Truncate):
    out = QTextStream(&data)
    out << "Result: " << qSetFieldWidth(10) << left << 3.14 << 2.7
    # writes "Result: 3.14      2.7       "
Это питон в чистом виде. Все будет работать.
Потому что функции вида (смотри список методов в приведённой тобой ссылке)
def __lshift__ (s)
def __rshift__ (, arg__2)
это как раз и есть перегруженные операторы потоков (<< и >>)


Вот аналогичный тестовый пример на PyQt4, вполне рабочий
import PyQt4
str = PyQt4.QtCore.QString()
ts = PyQt4.QtCore.QTextStream(str)
ts << "qwertty"
print str
Litkevich Yuriy Дата 29.5.2011, 11:52
  Что-то я не соображу как писать в поток (QTextStrem).
Операторов работы с потоком в Питоне вроде нет.
В официальной документации пример остался от Си++

???
Просмотр темы полностью (откроется в новом окне)
RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 13.7.2025, 14:10