Python gui-将输入传递给scrip

2024-10-03 06:24:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前有一个主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()

Tags: 用户namepyimport脚本inputmaingui
1条回答
网友
1楼 · 发布于 2024-10-03 06:24:14

使用一个文件,将GUI中的选择保存到一个文件中(就像以前对input.py所做的那样),然后读取该文件。

所以,在你的主要.py

  1. 打开图形用户界面
  2. 由to user输入的文件首选项
  3. 像以前一样读文件。

这里唯一的缺点是必须在main.py脚本中确保GUI已经关闭。为此,您可以使用subprocess模块,这里有几个函数可用于块,直到进程返回或结束。

使用这种方法,您只需键入:

python main.py

main.py里面的某个地方:

# The function call will wait for command to complete, then return the returncode attribute.
rcode = subprocess.call(['python', 'gui_input.py'])

将条目值写入文件的代码示例

import tkinter

top = tkinter.Tk()


def saveCallback():
    with open("example.txt", 'w') as outfile:
        outfile.write(e1.get())


e1 = tkinter.Entry(top)
b1 = tkinter.Button(top, text ="Save", command = saveCallback)

e1.pack(side=tkinter.LEFT)
b1.pack(side=tkinter.RIGHT)


top.mainloop()

相关问题 更多 >