I am no so sure. But try to add "str(fname)" in your QFileDialoge. And
check. In some cases it worked for me
Thanks and Regards,
Sudeepth Patinjarayi.
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 reimplementQPlainText’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
>>>>> <http://pastebin.com/9gfYaWRV>]
>>>>>
>>>>> 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
>>>
>>
>>
>>
>> --
>> **
>>
>> [image: San's personal blog] <http://feeds.feedburner.com/SanLuthraBlog>
>>
>> *
>> *
>>
>> --
>> 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
>
--
**
[image: San's personal blog] <http://feeds.feedburner.com/SanLuthraBlog>
*
*
--
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