Как я могу взять текстовое поле ввода текста и сделать его переменной?

У меня проблемы с Python, и я хотел бы получить некоторую помощь.

Я делаю подходящую GUI-интерфейс с хорошим интерфейсом.

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

    def on_button1_clicked (self, widget):
        print "Подготовка к запуску 'sudo apt-get install (пакет выбран)"
        command2 = 'xterm -e sudo apt-get install ' и self.instvar
        cmd2 = commands.getoutput(command2) 

Знаете ли вы, как взять запись в текстовом поле и сделать ее переменной? Я посмотрел в Интернете, и это то, что я придумал. И каждый раз, когда я пытаюсь это, это дает мне эту ошибку:

Traceback (последний вызов был последним):
  Файл "/home/rareshn/Documents/Zintori/Applets/aptfe/aptfe/AptfeWindow.py", строка 49, в on_button1_clicked
    command2 = 'xterm -e sudo apt-get install ' и self.instvar
AttributeError: у объекта 'AptfeWindow' нет атрибута 'instvar'

Если бы вы могли мне помочь, это было бы полезно. Спасибо!

1 ответ

Вы нажимаете кнопку раньше self.instvar установлено. on_textbox_changed обработчик, вероятно, никогда не вызывается. Запустите Glade и выберите текстовую запись. В редакторе свойств справа выберите signals вкладка и подключите GtkEditablechanged сигнал правильному обработчику.

Вы также должны поместить заявление для печати внутри on_textbox_changed чтобы увидеть, если это действительно называется.

Alse, эта строка не делает то, что вы думаете:

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

Смотрите этот интерактивный сеанс:

>>> 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'
Другие вопросы по тегам