调用具有多个引号的字符串

时间:2015-11-03 00:25:38

标签: python matplotlib tkinter

我正在使用Python和Tkinter创建一个GUI,我遇到了一个问题。

存在字符串输入,例如' PP,PKP',我需要使用该输入,如下图所示:

arrivals = model.get_ray_paths(
...     source_depth_in_km=500,
...     distance_in_degree=130,
...     phase_list=["Pdiff", "Sdiff", "pPdiff", "sSdiff"])

在get_ray_paths函数中,phase_list必须包含一个或多个字符串,表示您想要光线路径的地震相位类型。

我的问题是,我如何使用输入(用户在GUI中提供),并使用适当的phase_list格式调用这些输入,每个阶段周围带引号,并用逗号分隔每个阶段?

目前,输入设置如下:

# Create the Phase Input Box
phasetext = Label(top,text='Input Seismic Phase', fg="black", font=('Helvetica', 16,'bold'))
phasetext.pack(side='top')
global phase
self.phase = StringVar()
self.phase.set('PP')
self.phase_entry = Entry(top, width=10, textvariable=self.phase)
self.phase_entry.pack(side='top')

我在这样的函数中调用输入:

def plot_raytrace(self, event=None):
        model = TauPyModel(model="iasp91")
        arrivals = model.get_ray_paths(source_depth_in_km=float(self.depth.get()), distance_in_degree=float(self.deg.get()), phase_list=[self.phase.get()])
        arrivals.plot()

如果我只输入一个阶段,例如上面的' PP',这是有效的,但如果输入是,' PKP',' PP' ,我收到以下错误:

Traceback (most recent call last):
  File "Ray_Trace_Plot.py", line 77, in <module>
    Ray_Trace = Ray_Tracer(root)
  File "Ray_Trace_Plot.py", line 28, in __init__
    self.phase.set('PKP','PP')
TypeError: set() takes exactly 2 arguments (3 given)

有关如何使用引号和逗号重新创建字符串输入格式的任何想法?感谢。

1 个答案:

答案 0 :(得分:0)

您可以使用字符串的split()函数。要使用逗号作为分隔符从字符串中创建字符串列表:

In [1]: 'PKP,PP'.split(',')
Out[1]: ['PKP', 'PP']

In [2]: 'Pdiff,Sdiff,pPdiff,sSdiff'.split(',')
Out[2]: ['Pdiff', 'Sdiff', 'pPdiff', 'sSdiff']