[PySide] Help with resource files

Sean Fisk sean at seanfisk.com
Mon Apr 8 18:35:42 CEST 2013


Hi Al, 

Thanks for the confirmation with Python 2 and 3 on Ubuntu. Although we don't yet know whether it is a bug or just incorrect code by me. 


On Sunday, April 7, 2013 at 9:33 AM, Algis Kabaila wrote:

> 
> Hi Sean,
> 
> 
>  
> 
> 
> I think that the last statement of your program is based on wrong premise the python print statement will print a pyside (or pyqt) object - a pyside file. But python does not really directly know much about pyside objects.
> 
> 
> 

I wrapped a repr() around the readAll() call. It is returning a QByteArray as it should, but the QByteArray is empty:

#!/usr/bin/env python # test.py import PySide from PySide import QtCore import resources # Versions print 'Running PySide {0} / Qt {1}'.format( PySide.__version__, QtCore.__version__) print 'PySide compiled with Qt {0}'.format(QtCore.qVersion()) # Read resource test_txt = QtCore.QFile(':/test.txt') print 'Does it exist?: {0}'.format(test_txt.exists()) print "readAll(): `{0}'".format(repr(test_txt.readAll()))
Yields

Running PySide 1.1.2 / Qt 4.8.4 PySide compiled with Qt 4.8.4 Does it exist?: True 
readAll(): `PySide.QtCore.QByteArray('')' 
> 
>  
> 
> 
> I think that for the script to work you need to have something like textEdit and use something like textEdit.setText(<your text object>. I have not used qrc resoources only for icons (images), though in M Summerfields "Rapid GUI Programming with Python and QT" chapter 6 pp 165 to 203 described is an example "The Image Changer". The code should still be on the web. He does use the html files that are referred to via qrc resources.
> 
> 
>  
> 
> 
> To use icon images as qrc resources, you might like to take a quick look at simplistic tutorial that has links to source code and other materials for download: 
> 
> 
> http://qt-project.org/wiki/PySideSimplicissimus_Module_5_Combine
> 
> 
>  
> 
> 
> In particular, combineAllIn1 module may be closer to your liking:
> 
> 
> http://qt-project.org/wiki/PySideSimplicissimus_Module_7_CombineAllIn1
> 
> 
>  
> 
> 
> They are simple newbie examples and are well below your standards, but it never hurts to stoop down a bit. These examples were written in python 2.x and are being changed to pthon3. Your feedback would be appreciated!
> 
> 
>  
> 
> 
> I think you will be suitably impressed how readily PySide can be used in Python 2.x and in Python 3.x with minimal change of code!
> 
> 
> 

I actually learned PySide from the Simplicissiimus tutorials about a year ago after using Qt/C++ for a year. They were extremely helpful! In fact, I think I do remember running these examples with the icons and having it work.

I'm going to try running the Combine programs again, using resources only for icons and observing whether it works. If it does, I'll check out Mark's code and try to get that working. I'll report back when that's done.
> 
>  
> 
> 
> Al.
> 
> 
>  
> 
> 
> On Sunday 07 April 2013 16:14:52 Algis Kabaila wrote:
> 
> 
> 
> Hello Sean,
> 
> 
>  
> 
> 
> It is not a fault of python version. I am on linux kubuntu 12.04 LTS OS with "python" pointing to python 2.7 and python3 to python 3.2. Changed your script to python3 syntax and repeated the exercise with the same lemon result at the end:
> 
> 
>  
> 
> 
> ak at supremo:~/Documents/2013/Algis/linux$ python3 test.py
> 
> 
> Running PySide 1.1.0 / Qt 4.8.1
> 
> 
> PySide compiled with Qt 4.8.1
> 
> 
> Does it exist?: True
> 
> 
> readAll(): `'
> 
> 
> ak at supremo:~/Documents/2013/Algis/linux$ 
> 
> 
>  
> 
> 
> "supremo" is a funny name for my old black big and clunky computer (with a decent PCU etc.) 
> 
> 
>  
> 
> 
> There is a small reference to accessing files in Mark Summerfields "bible" on PyQt. But now I must quit this keyboard - one of our grand daughters is comming to watch a film on Lithuanian basketball, named "the other dream team".
> 
> 
>  
> 
> 
> Sorry for butting in to the list - hope to be back sometime and might try to concoct my own example and see if it shows where the "dog is burried".
> 
> 
>  
> 
> 
> Al.
> 
> 
>  
> 
> 
> On Sunday 07 April 2013 01:27:24 Sean Fisk wrote:
> 
> 
> 
> Hello Al, 
> 
> 
> 
> 
> 
> 
> My bad. I'm using Python 2.7.3 64-bit on Mac OS 10.6 with PySide 1.1.2 and Qt 4.8.4. It's not the system Python nor one installed from the distributions on python.org (http://python.org); I compiled it myself and am using virtualenvwrapper to manage my virtualenvs, if any of that matters.
> 
> 
> 
> 
> 
> 
> Thanks for the tip on Python 3. I'm using Python 2 and I believe that pyside-rcc defaults to Python 2. The resource module is in fact importing fine. There are no syntax errors or anything like that. It's weird: I tried importing in ipython and the import was fine. I just can't read the resource content as I should be able to.
> 
> 
> 
> 
> 
> 
> Thanks, 
> 
> 
> 
> 
> 
> 
> -- 
> 
> 
> Sean Fisk
> 
> 
> 
> 
> 
> 
> On Sunday, April 7, 2013 at 1:19 AM, Algis Kabaila wrote: 
> 
> 
> 
> 
> 
> Hi Sean,
> 
> 
>  
> 
> 
> You do not give much away: to begin with, your OS and Python version would be useful.
> 
> 
>  
> 
> 
> If it is Python 3.x then a small change may help:
> 
> 
>  
> 
> 
> pyside-rcc -py3 resources.qrc -o resources.py 
> 
> 
>  
> 
> 
> Just a shot in the dark, Sean!
> 
> 
>  
> 
> 
> Al.
> 
> 
>  
> 
> 
> On Saturday 06 April 2013 17:51:28 Sean Fisk wrote:
> 
> 
> 
> Hello everyone, 
> 
> 
> 
> 
> 
> 
> I want to embed some images and fonts in my PySide program using Qt's resource system. I've used it very successfully in C++. However, I'm having some trouble getting resource files to work with PySide. The resource files seem to compile it all right, but I can't read my files in my program.
> 
> 
> 
> 
> 
> 
> I've created a minimum example to illustrate the problem:
> 
> 
> 
> 
> 
> 
> test.py
> 
> 
> #!/usr/bin/env python
> 
> 
> # test.py
> 
> 
> import PySide
> 
> 
> from PySide import QtCore
> 
> 
> import resources
> 
> 
>  
> 
> 
> # Versions
> 
> 
> print 'Running PySide {0} / Qt {1}'.format(
> 
> 
> PySide.__version__, QtCore.__version__)
> 
> 
> print 'PySide compiled with Qt {0}'.format(QtCore.qVersion())
> 
> 
>  
> 
> 
> # Read resource
> 
> 
> test_txt = QtCore.QFile(':/test.txt')
> 
> 
> print 'Does it exist?: {0}'.format(test_txt.exists())
> 
> 
> print "readAll(): `{0}'".format(test_txt.readAll())
> 
> 
> resources.qrc
> 
> 
> <RCC>
> 
> 
> <qresource prefix="/">
> 
> 
> <file>test.txt</file>
> 
> 
> </qresource>
> 
> 
> </RCC>
> 
> 
> test.txt
> 
> 
> This is just a test.
> 
> 
> Instructions
> 
> 
> Compile the resource file and then run:
> 
> 
> $ pyside-rcc resources.qrc -o resources.py
> 
> 
> $ python test.py
> 
> 
> Running PySide 1.1.2 / Qt 4.8.4
> 
> 
> PySide compiled with Qt 4.8.4
> 
> 
> Does it exist?: True
> 
> 
> readAll(): `'
> 
> 
> Interestingly, if I change the readAll() call to readLine(), the program segfaults. Anyone have any suggestions? I'd be open to other ways to distribute fonts and images with my program as well.
> 
> 
> 
> 
> 
> 
> Sincerely,
> 
> 
> 
> 
> 
> 
> -- 
> 
> 
> Sean Fisk
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/pyside/attachments/20130408/066c4c7b/attachment.html>


More information about the PySide mailing list