使用Tkin向Python脚本传递值

2024-04-19 23:14:35 发布

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

所以我编写了一个python脚本,它使用PIL库来格式化传递给它的png。我想让脚本更加用户友好,在环顾四周之后,我看到了Tkinter库,它看起来很完美。基本上,脚本有五个变量,我需要传递给它才能运行。我当前正在使用raw_input()函数向用户请求以下变量:

path_to_png
title
subtitle
source
sample_size

一旦收到脚本运行并导出格式化的png。我已经使用Tkinter构建了这些基本输入,正如您从下面的图片中看到的,但是我不知道如何将输入的文本值和文件路径从choose png按钮传递到它们各自的变量。在

enter image description here

^{pr2}$

Tags: tosamplepath函数用户脚本sourceinput
2条回答

为了从条目小部件接收值,您需要使用get()函数。get()函数将返回entry小部件中的任何内容。例如,在您的例子中:response = sample_size.get()将把变量response设置为0。请参阅这个page以获取有关条目小部件的更多文档。在

希望这有帮助。在

我试过你的代码,我加了几行:

from Tkinter import *
from tkFileDialog import askopenfilename
from tkMessageBox import *

app = Tk()
app.title("Picture Formatting")
app.geometry('500x350+200+200')

# 
def callback():
    global chart_path
    chart_path = askopenfilename()
    return

def title_data():
    title_data = chart_title
    return

def calculate():
    chart_title = title.get()
    chart_subtitle = subtitle.get()
    chart_source = source.get()
    chart_sample_size = sample_size.get()

    print "chart_path : ", chart_path
    print "chart_title : ", chart_title
    print "chart_subtitle : ", chart_subtitle
    print "chart_source : ", chart_source
    print "chart_sample_size : ", chart_sample_size

    #Call your functions here

    return

errmsg = 'Error!'

# Get chart data

chart_path = ''
browse_botton = Button(app, text="Choose png", width=15, command=callback)
browse_botton.pack(side='top', padx=15, pady=15)

chart_title = StringVar()
title = Entry(app, textvariable = chart_title)
title.pack(padx=15, pady=15)

chart_subtitle = StringVar()
subtitle = Entry(app, textvariable = chart_subtitle)
subtitle.pack(padx=15, pady=15)

chart_source = StringVar()
source = Entry(app, textvariable = chart_source)
source.pack(padx=15, pady=15)

chart_sample_size = IntVar()
sample_size = Entry(app, textvariable = chart_sample_size)
sample_size.pack(padx=15, pady=15)

submit_button = Button(app, text="Submit", width=15, command=calculate)
submit_button.pack(side='bottom', padx=15, pady=15)

app.mainloop()

我想您想问的问题是如何在条目小部件中获取文本值,并从askopenfilename()函数中获取路径文本。您可以使用方法Entry.get()来获取特定条目小部件中的文本值。在

您只需使用str = askopenfilename()来获取路径的文本值。但是因为这行代码是在函数中编写的,所以您需要声明它是一个全局变量或创建一个类来包含它们,否则解释器将认为该变量是一个局部变量,它不会传递给我添加的函数calculate()。在

由于您没有使用类来包含变量,所以我也将变量用作全局变量。这不是一个好的设计。您可以考虑创建一个类。在

相关问题 更多 >