crossplatform.ru

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


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

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

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


Последние 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 Текстовая версия Сейчас: 23.4.2021, 8:11