Я испытываю затруднения из-за Python и хотел бы иметь некоторую справку.
Я делаю способный GUI 'фронтендом' с хорошим UI.
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)
Вы знали бы, как взять запись текстового поля и сделать ее переменной? Я осмотрел сеть, и это - то, что я придумал. И каждый раз, когда я пробую это, это дает мне эту ошибку:
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'
Если бы Вы могли бы помочь мне, который был бы полезен.Спасибо!
Вы нажимаете кнопку, прежде чем self.instvar
будет установлен. on_textbox_changed
обработчик, вероятно, никогда не называют. Поляна запуска и выбор Ваш ввод текста. В редакторе свойств на праве выбирают signals
вкладка и соединяются GtkEditable
changed
сигнал к корректному обработчику.
необходимо также поместить оператор печати в 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'