Супер простая идея: просто добавьте поддельную строку запроса к URL.
<param name="source" value="app.xap?r12345"/>
Большинство серверов должно проигнорировать его и сервер, файл обычно - зависит от Вашего сервера. Если Вы становитесь действительно умными, Вы могли бы сделать страницу хостинга динамичной и автоматически добавить количество галочки или строку даты и времени к строке запроса. Это гарантирует, чтобы Вы получили кэширование, когда Вы хотите его, но вызываете загрузку, когда существует изменение.
Идеально, Ваш сервер должен сделать это для Вас. Но если нет...
Оказывается, в PySide есть ошибка с классом QSpacerItem. Комментирование экземпляров QSpacerItem в приведенном выше коде заставляет его работать нормально. Есть отчет об ошибке в PySide bugzilla .
Во-первых, вы используете PySide (Nokia), а не PyQt4 (Riverbank Computing), хотя их API почти идентичны, это не тот же проект. Примеры PySide доступны здесь: git clone git: //gitorious.org/pyside/pyside-examples.git
Думаю, проблема может быть связана с вашим вызовом
super(MyMainWindow, self).__init__(parent)
try
QtGui.QMainWindow.__init__(self, parent)
.
Я знаю, что похоже то же самое, но я столкнулся с аналогичными проблемами с super при использовании PyQt4, и, насколько я могу судить, PySide от Nokia имеет те же проблемы. Это как-то связано с тем, владеет ли Python родительским объектом или он принадлежит базовому объекту C ++. По крайней мере, попробуйте, это займет менее 5 секунд!
Ниже приведен пример, на котором я основываюсь, он из репозитория git для PySide.
#!/usr/bin/env python
#############################################################################
##
## Copyright (C) 2004-2005 Trolltech AS. All rights reserved.
##
## This file is part of the example classes of the Qt Toolkit.
##
## This file may be used under the terms of the GNU General Public
## License version 2.0 as published by the Free Software Foundation
## and appearing in the file LICENSE.GPL included in the packaging of
## this file. Please review the following information to ensure GNU
## General Public Licensing requirements will be met:
## http://www.trolltech.com/products/qt/opensource.html
##
## If you are unsure which license is appropriate for your use, please
## review the following information:
## http://www.trolltech.com/products/qt/licensing.html or contact the
## sales department at sales@trolltech.com.
##
## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
##
#############################################################################
import sys
from PySide import QtCore, QtGui
from ui_calculatorform import Ui_CalculatorForm
class CalculatorForm(QtGui.QWidget):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.ui = Ui_CalculatorForm()
self.ui.setupUi(self)
@QtCore.pyqtSignature("int")
def on_inputSpinBox1_valueChanged(self, value):
self.ui.outputWidget.setText(QtCore.QString.number(value + self.ui.inputSpinBox2.value()))
@QtCore.pyqtSignature("int")
def on_inputSpinBox2_valueChanged(self, value):
self.ui.outputWidget.setText(QtCore.QString.number(value + self.ui.inputSpinBox1.value()))
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
calculator = CalculatorForm()
calculator.show()
sys.exit(app.exec_())