Unless you specifically change settings on SIP, a QString is returned for all 
Qt methods that return a "string" results. You have to convert it to a python 
string if you want to treat it as such:

self.scnFilePath.setText(os.path.normpath(str(fname)))


On Dec 8, 2012, at 9:01 AM, šãñ wrote:

> I have two browse button in the GUI as uprobably say in last image atachment
> 
> so instead of creating two different slot for each button click i implemented 
> it this way !!
>           # assign slots to buttons
>           scnFile=partial(self.showFileDialog,"scnFile")
>           self.browseBtn.clicked.connect(scnFile)
>           rndPath=partial(self.showFileDialog,"rdPath")
>           self.rdBtn.clicked.connect(rndPath)
> 
> 
> and the showFileDialog() method as as under:
>     def showFileDialog(self,*args):
>         directory=os.path.expanduser('~')
>         if args[0]=="scnFile":
>             fname=QtGui.QFileDialog.getOpenFileName(self,'Open 
> File',directory)
>             if os.path.isfile(fname):
>                 self.scnFilePath.setText(fname)
>         elif args[0]=="rdPath":
>             selectedDir=QtGui.QFileDialog.getExistingDirectory(self,"Select 
> Render Directory",directory)
>             if selectedDir.isEmpty():
>                 print "No directory selected"
>             else:
>                 self.renDir.setText(selectedDir)
> 
> also if i try to do self.scnFilePath.setText(os.path.normpath(fname))
> 
> i get error saying 
> Traceback (most recent call last):
>   File "RenderUI.py", line 203, in showFileDialog
>     if os.path.isfile(os.path.normpath(fname)):
>   File "D:\Python26\lib\ntpath.py", line 417, in normpath
>     if path.startswith("\\"):
> AttributeError: 'QString' object has no attribute 'startswith'
> 
> 
> 
> 
> On Sat, Dec 8, 2012 at 4:12 AM, Justin Israel <[email protected]> wrote:
> 1) Just set your label to have a fixed with (setFixedWidth), or make your 
> other widgets size policies "expanding" so they take up any new space. 
> Probably the first one though.
> 
> 2) If you want an asynchronous result from your filedialog, then instead of 
> using my static getExistingDirectory() suggestion, just stick with creating 
> the instance like you were. If you stay with calling the exec_() on the 
> dialog, you are waiting for a response anyways so you can just set the value 
> on to the text box. But for the async approach, you would show() instead of 
> exec_() and maybe connect the accept() signal to a slot that will check the 
> value and enter it into the textedit.
> For more specific help, I would need to see an example of what you are trying.
> 
> 3) Why would so many people recommend not using list comprehension? Just flat 
> out not to use it? They are a great way to get more performance than a normal 
> for loop. I can see there are misuses of them though.
> For your specific example, you would usually not want to use a list 
> comprehension for side effects. That is, you shouldn't use them to append or 
> call some method in a loop. They are used to produce results that you intend 
> to keep.
> There really isn't much you can do to change your example. Qt would have 
> needed to provide an  layout.addWidgets(aList) to accept a list of widgets. 
> So you just need to call them in order like you are doing.
> 
> 
> On Fri, Dec 7, 2012 at 1:10 PM, šãñ <[email protected]> wrote:
> 
> thank you guys for pointing a solution but Now I really have a bunch of more 
> questions these are pretty basic that i know ...
> 
> my first question is how do I keep the gridColumWidth fixed so that it should 
> not change if the label text changes(see attached image)
> 
> my second question is how can i use a showFileDialog slot fill QLineEdit for 
> scne file for selecting directory and similarly in second tab ..(as you can 
> see in the attached screenshot I have so many browse buttons)
> I remember seeing in the PyQt tutorial where you made use of partial but i 
> guess that was for removeCallable from OM, but now how should i find 
> QPushButton.objectName to be passed to slot so depending on what button is 
> pressed i can perform some operation...
> 
> thirdly , so many people have recommended me not to use List comprehension 
> but i find it convenient(at least here) to use while addWidget or addLayout...
> like [p3_HBox2.addWidget(each) for each in 
> [self.pylbl,self.pyEdt,self.pybrwBtn]]  
> 
> but I have a situation when I am using a combination of addWidget ,addStretch 
> and addLayout 
> 
> like in this case
>  
>           p1_vertical.addLayout(gridLayout)
>           p1_vertical.addLayout(gridLayout2)
>           p1_vertical.addLayout(hbox)
>           p1_vertical.addWidget(hLine)
>           p1_vertical.addLayout(nxtbtnbox)
> 
> in that case how should i after adding hbox in LC i can add addWidget(hLine) 
> then again nxtbtnbox, i feel like i can use it with enumerate but is their 
> any better option? 
> 
>   
> 
> 
> On Sat, Dec 8, 2012 at 12:30 AM, Justin Israel <[email protected]> wrote:
> If you are using your own custom status bar in a widget, then you have to 
> connect focus or hover events to something that sets the message on the 
> status bar. You can set the setStatusTip("") on each widget and then just 
> read that.
> 
> When you use a QMainWindow, the status bar is already wired up for you so 
> that any time you hover a widget, the statusBar will automatically read the 
> widgets statusTip():
> 
> app = QtGui.QApplication([])
> 
> w = QtGui.QMainWindow()
> button = QtGui.QPushButton("clicky", w)
> button.setStatusTip("I am a clicky")
> w.setCentralWidget(button)
> 
> status = w.statusBar()
> 
> w.show()
> w.raise_()
> 
> status.showMessage("Welcome to the app!", 5000)
> 
> app.exec_()
> 
> For the file dialog, the way you are using it, there is a convenience static 
> method you can call:
> http://qt-project.org/doc/qt-4.8/qfiledialog.html#getExistingDirectory
> 
> It will return an empty string if they cancel:
> 
> directory=os.path.expanduser('~')
> selectedDir = QtGui.QFileDialog.getExistingDirectory(w, 
>                 "Select Render Directory", directory)
> 
> if selectedDir.isEmpty():
>     print "No directory selected"
> else:
>     print selectedDir
> 
> 
> On Fri, Dec 7, 2012 at 9:56 AM, Kurian O.S <[email protected]> wrote:
> For Directory you want to use exec so you need to change your code like this
> 
>     def showDirDialog(self):
>         directory=os.path.expanduser('~')
>         dirPath=QtGui.QFileDialog(self,"Select Render Directory",directory)
>         dirPath.setFileMode(QtGui.QFileDialog.DirectoryOnly)
>         if dirPath.exec_() == 1:
>             fname_list = str(dirPath.selectedFiles()[0])
>             print fname_list
> 
> For changing the statusBar text you need to implement focusIn and out Event 
> and Justin already mention about that in reimplement QPlainText’s 
> focusInEvent in another source file ,how to ? thread.
> 
> 
> On Fri, Dec 7, 2012 at 6:25 AM, san <[email protected]> wrote:
> as a part of my learning PyQt4 I started making a gui(see attachment) where I 
> implement all the examples I learn from video tuts or book I am referring,
> 
> however I count figure out how should I implement the method to show text 
> message on the status bar when user hover mouse over a widget[link to 
> pastebin ]
> 
> and secondly I dont understand how come this method to select Directory is 
> not working?
> 
>     def showDirDialog(self):
>         directory=os.path.expanduser('~')
>         dirPath=QtGui.QFileDialog(self,"Select Render Directory",directory)
>         dirPath.setFileMode(QtGui.QFileDialog.DirectoryOnly)
> 
> 
> -- 
> view archives: http://groups.google.com/group/python_inside_maya
> change your subscription settings: 
> http://groups.google.com/group/python_inside_maya/subscribe
> 
> 
> 
> -- 
> --:: Kurian ::--
> 
> 
> -- 
> view archives: http://groups.google.com/group/python_inside_maya
> change your subscription settings: 
> http://groups.google.com/group/python_inside_maya/subscribe
> 
> 
> -- 
> view archives: http://groups.google.com/group/python_inside_maya
> change your subscription settings: 
> http://groups.google.com/group/python_inside_maya/subscribe
> 
> 
> 
> -- 
>  
> 
> 
> 
> 
> 
> -- 
> view archives: http://groups.google.com/group/python_inside_maya
> change your subscription settings: 
> http://groups.google.com/group/python_inside_maya/subscribe
> 
> 
> -- 
> view archives: http://groups.google.com/group/python_inside_maya
> change your subscription settings: 
> http://groups.google.com/group/python_inside_maya/subscribe
> 
> 
> 
> -- 
> 
> 
> 
> 
> 
> 
> -- 
> view archives: http://groups.google.com/group/python_inside_maya
> change your subscription settings: 
> http://groups.google.com/group/python_inside_maya/subscribe

-- 
view archives: http://groups.google.com/group/python_inside_maya
change your subscription settings: 
http://groups.google.com/group/python_inside_maya/subscribe

Reply via email to