【发布时间】:2015-11-03 00:25:38
【问题描述】:
我正在使用 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 必须由 1 个或多个字符串组成,这些字符串表示您想要射线路径的地震相位类型。
我的问题是,我如何使用输入(用户在 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)
关于如何将字符串输入重新创建为带引号和逗号的格式的任何想法?谢谢。
【问题讨论】:
-
你的意思是
'PKP,PP'?'PKP', 'PP'是两个字符串。 -
是的,但最后我需要函数 get_ray_paths 将相位列表的输入设为 phase_list=["Pdiff", "Sdiff", "pPdiff", "sSdiff"])跨度>
标签: python matplotlib tkinter