Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #44895

Re: Why sfml does not play the file inside a function in this python code?

Date 2013-05-07 15:57 +0100
From MRAB <python@mrabarnett.plus.com>
Subject Re: Why sfml does not play the file inside a function in this python code?
References <69b77965-5ff5-4c6f-a73d-0826b06353f0@googlegroups.com> <mailman.1402.1367924006.3114.python-list@python.org> <85771dda-4289-4cfb-a96f-23809664913e@googlegroups.com>
Newsgroups comp.lang.python
Message-ID <mailman.1413.1367938681.3114.python-list@python.org> (permalink)

Show all headers | View raw


On 07/05/2013 14:56, cheirasacan@gmail.com wrote:
> El martes, 7 de mayo de 2013 12:53:25 UTC+2, MRAB  escribió:
>> On 07/05/2013 10:27, cheirasacan@gmail.com wrote:
>> > from tkinter import *
>> > import sfml
>> >
>> > window = Tk()
>> > window.minsize( 640, 480 )
>> >
>> > def sonido():
>> >      file = sfml.Music.from_file('poco.ogg')
>> >      file.play()
>> >
>> > test = Button ( window, text = 'Sound test', command=sonido )
>> > test.place ( x = 10, y = 60)
>> >
>> > window.mainloop()
>> >
>> > Using Windows 7, Python 3.3, sfml 1.3.0 library, the file it is played if i put it out of the function. � what am i doing wrong ? Thanks.
>> >
>>
>> Perhaps what's happening is that sonido starts playing it and then
>> returns, meaning that there's no longer a reference to it ('file' is
>> local to the function), so it's collected by the garbage collector.
>>
>> If that's the case, try keeping a reference to it, perhaps by making
>> 'file' global (in a simple program like this one, using global should
>> be OK).
>
> Thanks. A global use of 'sonido' fix the problem. The garbage collector must be the point. But this code is part of a longer project. What can i do to fix it without the use of globals? I will use more functions like this, and i would like to keep learning python as well good programming methodology.
> Thanks.
>
Presumably the details of the window are (or will be) hidden away in a
class, so you could make 'file' an attribute of an instance.

Also, please read this:

http://wiki.python.org/moin/GoogleGroupsPython

because gmail insists on adding extra linebreaks, which can be somewhat
annoying.

Back to comp.lang.python | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

Why sfml does not play the file inside a function in this python code? cheirasacan@gmail.com - 2013-05-07 02:27 -0700
  Re: Why sfml does not play the file inside a function in this python code? MRAB <python@mrabarnett.plus.com> - 2013-05-07 11:53 +0100
    Re: Why sfml does not play the file inside a function in this python code? cheirasacan@gmail.com - 2013-05-07 06:56 -0700
      Re: Why sfml does not play the file inside a function in this python code? MRAB <python@mrabarnett.plus.com> - 2013-05-07 15:57 +0100
        Re: Why sfml does not play the file inside a function in this python code? cheirasacan@gmail.com - 2013-05-07 13:02 -0700
      Re: Why sfml does not play the file inside a function in this python code? Chris Angelico <rosuav@gmail.com> - 2013-05-08 01:06 +1000
      dist-packages or site-packages  in Python 3.2 ? Vincent Vande Vyvre <vincent.vandevyvre@swing.be> - 2013-05-07 19:03 +0200

csiph-web