[PyQt] Can I create more than one instance of a class?
Sundance
sundance at ierne.eu.org
Wed Jun 18 09:20:16 BST 2008
Hi Adonay,
> Hi, I'm programing a little app which needs to open more than one
> time, the same window.
> Now I make an import and instance the window like this.
>
> from new_window import *
Bad idea. As a rule of thumb, you don't want to use 'import *' when you
can avoid it. It's okay while your app is small; but once it grows,
trust me, you'll be glad you can tell at a glance what comes from what
module. So you may want to learn the best practice right away and
avoid 'import *'. :)
> a = new_window
> a.show()
> b = new_window
> b.show()
> c = new_window
> c.show()
You are referencing the SAME instance, 'new_window', in all cases! If
you want different instances, you need to instantiate your class each
time. So, assuming your class is called MyWindow, your code should look
like:
from MyWindow import MyWindow ## Give the module a descriptive name too!
a = MyWindow()
a.show()
b = MyWindow()
b.show()
c = MyWindow()
c.show()
print a, b, c
Perhaps your are not very well at ease with how Python works yet? If so,
there are excellent tutorials out there:
- http://docs.python.org/tut/
- http://www.diveintopython.org/toc/
HTH,
-- S.
More information about the PyQt
mailing list