On 06/29/2013 06:36 PM, Phil wrote:
Thank you for reading this.
You should be telling us some things. I'll guess for you:
You're using Python 3.3 with Qt for a gui, and Linux 12.04 for an OS.
I'm attempting to access the GUI widgets. The buttonClicked slot does
what I want but I'd like to access the widgets outside of the class. My
function setLabel doesn't work because self and ui are not known.
I have a second class named Frame that includes a function named dummy.
Accessing that function is not a problem.
The function is called a method if it's actually part of a class.
You don't show us the code for that class and method. But according to
the call below, the method must be a staticmethod or equivalent.
Perhaps like the following:
class Frame:
@staticmethod
def dummy():
return 42
Static methods are strange because they have no self or cls arguments.
In other words, they're just ordinary functions which happen to be
defined inside a class. So it's in a different namespace, but has no
special arguments.
The other "strange" method is a classmethod, which takes a cls (class)
parameter instead of a self parameter.
The methods below are ordinary methods, and thus need a self parameter.
Normally that's obtained by creating an instance of the class.
-------------------------------------
from mainwindow import Ui_MainWindow
from PySide import QtCore, QtGui
from frame import Frame
class DrawTest(QtGui.QMainWindow):
def __init__(self, parent=None):
super(DrawTest, self).__init__(parent)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
def buttonClicked(self):
print("clicked")
self.ui.pushButton.setText("test")
self.ui.label.setText("Testing")
def setLabel(self):
self.ui.label.setText("Bingo")
DrawTest.setLabel(self)
DrawTest.ui.label.setText("Bingo")
The two lines above don't work,
You generally should specify in what way they don't work. In your case
they don't work because 'self' is unbound in top-level code. You could
use self if you were already inside a method of the same class and were
calling a different one.
so my question is how do access the
setText function? And, what do I do about the self parameter in the
setLabel function?
Normally, you create an instance of the class. For example, you might do:
mywindow = DrawTest(parent)
Then, now you have the object, you can call the method:
mywindow.setLabel()
I have no idea about ui.label, I don't know QT.
Accessing the Frame class is not a problem.
Frame.dummy()
I have spent the better part of a day searching the Internet for an
answer and I have attempted to find an answer from two other mailing
lists but they don't entertain low level questions.
You need to play with classes using a simple Python tutorial, before you
try to even understand a GUI.
--
DaveA
_______________________________________________
Tutor maillist - Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor