我对Python非常陌生,目前正在Tkinter中构建一个GUI界面,并且有一个完整的工作代码。我想这将是很好的,有一个按钮的工作,从键盘按“回车”键
它的代码行是:win.bind('<Return>', testButton.functionName)
然后把“event”放在函数括号akafunctionName(event)
中,一切都很好
现在的问题是,当你按下GUI界面中的按钮时,它就不工作了,这意味着我需要复制和重命名其中一个函数来同时拥有这两个函数
因为它是一个相同的代码,所以将它作为一个模块会更有意义。然而,当我导入我的模块时,它似乎看不到我的代码的其余部分,并且声称我的变量不存在
这是一个简单的例子,我是如何做到这一点
我的模块另存为模块测试:
def test():
sum = a + b
return sum
主程序:
import moduleTest
a = 10
b = 12
moduleTest.test()
print test()
它一直声称a和b没有定义
我显然误解了模块是如何工作的,因为在我的脑海中,当我导入一个模块时,它应该简单地导入整个代码,并执行与此相同的操作:
import moduleTest
a = 10
b = 12
def test():
sum = a + b
return sum
print test()
我误解了什么,做错了什么
正如@abarnert指出的,globals对于每个模块都是全局的。为了解决此问题,您可以使用:
以及
我想指出的是,您不应该调用变量
sum
,因为这已经是您正在覆盖的现有函数Python全局变量对每个模块都是全局的,而不是对整个程序
通常的处理方法是不使用globals
对于您的玩具示例,您可以
def test(a, b):
,然后从主模块调用test(a, b)
,这通常是正确的解决方案,但并不总是合适的其他选项包括:
main
和moduleTest
都可以作为import thirdmodule
访问。这通常适用于共享配置值之类的情况李>下面是我的代码的几个单独片段,让您了解一下:
当我将它转换为一个模块时,它不仅不断地请求item和oldString定义,而且还请求answerIn、hangedOutput等,它们是Tkinter标签的一部分
相关问题 更多 >
编程相关推荐