Como posso pegar uma entrada de texto da caixa de texto e torná-la uma variável?

1

Estou com problemas no Python e gostaria de receber ajuda.

Eu estou fazendo um 'front-end' de interface gráfica com uma boa interface do usuário.

    def on_textbox_changed(self):
        self.instvar = self.installapps.get_text()

    def on_button1_clicked(self, widget):
        print "Preparing to run 'sudo apt-get install (package selected)"
        command2 = 'xterm -e sudo apt-get install ' and self.instvar
        cmd2 = commands.getoutput(command2)

Você saberia como inserir uma entrada de texto e torná-la uma variável? Eu olhei ao redor da web e é isso que eu criei. E toda vez que eu estou tentando isso, isso me dá esse erro:

Traceback (most recent call last):
  File "/home/rareshn/Documents/Zintori/Applets/aptfe/aptfe/AptfeWindow.py", line 49, in on_button1_clicked
    command2 = 'xterm -e sudo apt-get install ' and self.instvar
AttributeError: 'AptfeWindow' object has no attribute 'instvar'

Se você pudesse me ajudar, isso seria útil. Obrigado!

    
por Raresh Nistor 11.09.2014 / 09:05

1 resposta

3

Você está clicando no botão antes de self.instvar ser definido. O manipulador on_textbox_changed provavelmente nunca é chamado. Inicialize Glade e selecione sua entrada de texto. No editor de propriedades à direita, selecione a guia signals e conecte o sinal GtkEditable changed ao manipulador correto.

Você também deve colocar um comando print dentro de on_textbox_changed para ver se ele realmente é chamado.

Além disso, esta linha não faz o que você pensa:

command2 = 'xterm -e sudo apt-get install ' and self.instvar

Veja esta sessão interativa:

>>> instvar = "firefox"
>>> "xterm -e sudo apt-get install" and instvar    # Your code, wrong output
'firefox'
>>> "xterm -e sudo apt-get install %s" % instvar    # Choose one of these
'xterm -e sudo apt-get install firefox'
>>> "xterm -e sudo apt-get install " + instvar
'xterm -e sudo apt-get install firefox'
>>> "xterm -e sudo apt-get install {}".format(instvar)
'xterm -e sudo apt-get install firefox'
    
por Timo 11.09.2014 / 11:57