[PyKDE] QProcess: more guidance needed

Tina Isaksen tina at bestemselv.com
Wed Mar 8 07:58:07 GMT 2006


I wrote:

> Yes, I have already thought about that and it's indeed the language 
> that is the problem with that approach. So I was thinking that if I 
> could catch the process waiting for input I could pick up the question 
> (since I know what it asks for and what form it has. Like: "Do you 
> want to continue [Y/n]?" Then let an 'OK' button or something feed the 
> upper case letter to stdin).


Ok, so I managed to isolate the yes or no option regardless of language. 
But I can't seem to feed it correctly to the apt-get process. The code:

def readOutput(self):
        outputString = QString(self.upgradeProcess.readStdout())
        self.mainTextWindow.append(outputString)
       
        # Check if upgradeProcess ask to continue
        if outputString.endsWith("? "):
            qApp.processEvents()
           
            # Isolate the yes/ no characters needed for input.
            yesOptionString = outputString.right(6)
            yesOption = yesOptionString.left(1)
            noOptionString = outputString.right(4)
            noOption = noOptionString.left(1)
            answer = yesOption # Temporary setting answer for testing. 
Will be replaced by user input.
            self.mainTextWindow.append(answer) # Temporary to verify answer
           
            # Feed answer to stdin
            if answer == yesOption:
                self.mainTextWindow.append("This is the yesOption!!") # 
Temporary just to verify that Y is isolated
                self.upgradeProcess.writeToStdin(yesOption)
                ## self.upgradeProcess.writeToStdin(chr(121)) #No difference
               
            else:
                self.mainTextWindow.append("This is the noOption!!") # 
Temporary  just to verify that Y is isolated
                self.upgradeProcess.writeToStdin(noOption)
           
            self.upgradeProcess.closeStdin()
            ouputString = " "


I do feed 'something' that apt-get recieves because it aborts. It would 
not have done that unless it got a response of some sort. But even if I 
replace the 'yesOption' with the letter "y" it still just aborts. So I'm 
thinking that either I don't know how to properly write to stdin (a 
distinct posibility) or apt-get uses some other program/ process/ 
interface to handle user interaction.

I have tried looking for clues in apt's sourcecode but C++ is really not 
my cup of tea so I'm still stuck. And I'm running out of ideas...
So if anyone have an idea I'd really appreciate it.

Tina

Project: Tinapt
http://tinapt.berlios.de/
SVN repository:
http://svn.berlios.de/wsvn/tinapt/trunk/?rev=0&sc=0




More information about the PyQt mailing list