2015-11-03 43 views
0

我正在使用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) 

上^ h任何想法通過引號和逗號重新創建一個字符串輸入的格式?謝謝。

+0

您的意思是''PKP,PP'? 「PKP」,「PP」是兩個字符串。 –

+0

是的,但最後我需要函數get_ray_paths來爲階段列表輸入phase_list = [「Pdiff」,「Sdiff」,「pPdiff」,「sSdiff」]) –

回答

0

您可以使用字符串的split()函數。以逗號作爲分隔符的字符串列出字符串列表:

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

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