我在使用 Python 时遇到了一些问题,希望得到一些帮助。
我正在制作一个具有漂亮 UI 的恰当的 GUI‘前端’。
def on_textbox_changed(自身): self.instvar = self.installapps.get_text() def on_button1_clicked(自身,小部件): 打印“准备运行'sudo apt-get install(选定的包)” command2 = 'xterm -e sudo apt-get install ' 和 self.instvar cmd2 = 命令.getoutput(命令2)
您知道如何获取文本框条目并将其设为变量吗?我在网上查找了一下,然后想到了以下方法。每次我尝试这样做时,都会出现此错误:
回溯(最近一次调用最后一次): 文件“/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
卡并将GtkEditable
changed
信号连接到正确的处理程序。
您还应该在里面放置一个打印语句on_textbox_changed
来查看它是否真的被调用。
此外,这一行并没有按照你想象的那样做:
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'