【发布时间】:2014-08-12 14:42:32
【问题描述】:
我目前有一个主 python 脚本 (main.py),它从第二个脚本 (input.py) 读取输入,用户可以修改该脚本。用户在第二个脚本中设置变量,例如维度数 (ndim)、点数 (npts) 等,然后使用以下命令将这些变量读入 main.py:
filename = sys.argv[-1]
m = __import__(filename)
ndim = m.ndim
npts1 = m.npts1
npts2_recorded = m.npts2_recorded
脚本由以下命令执行:
python main.py input
我想用 GUI 替换 input.py。 Tkinter 似乎是一个明智的起点,我可以看到如何创建 GUI 以使用户能够设置他们本来可以在 input.py 中设置的各种选项。但是,我不知道如何从 GUI 将此信息传递给 main.py。是否有等效于__import(filename)__ 的方法可以从用户在 GUI 中所做的选择中提取信息,或者是否有其他方法可以达到相同的效果。
基于以下答案的最小(非)工作示例:
此代码创建文件example.txt,但提供给block1 的文本不会写入文件。
from Tkinter import *
def saveCallback():
with open("example.txt",'w') as outfile:
outfile.write(block1.get())
def UserInput(status,name):
optionFrame = Frame(root)
optionLabel = Label(optionFrame)
optionLabel["text"] = name
optionLabel.pack(side=LEFT)
var = StringVar(root)
var.set(status)
w = Entry(optionFrame, textvariable= var)
w.pack(side = LEFT)
optionFrame.pack()
return w
if __name__ == '__main__':
root = Tk()
block1 = UserInput("", "Block size, dimension 1")
Save_input_button = Button(root, text = 'Save input options', command = saveCallback())
Save_input_button.pack()
root.mainloop()
【问题讨论】:
-
python main.py input是正确的。 Python 将.py添加到input,因此python main.py input.py将尝试读取文件input.py.py
标签: python user-interface tkinter