从tgui变量返回

2024-04-25 08:27:58 发布

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

我正在考虑使用一个简单的、目前很难看的、用Tkinter构建的GUI来获取用户的两个变量。即文件路径和下拉列表(选项菜单)中的选项。在

选择的变量将在稍后的Python脚本中使用,这正是我遇到困难的地方。简单地说,如何将用户的选择分配给变量:载体、路径。在

示例代码请参见以下内容:

from Tkinter import *
from tkFileDialog import askopenfilename

def Choose_Path():
    Tk().withdraw()
    return askopenfilename()


root = Tk()
root.geometry('400x400')
root.configure(background='#A2B5CD')

C_Label = Label(root, text='Carrier Choice:', bg='#A2B5CD', fg='black',font=('Calibri', 12))
C_Label.grid(row=0,sticky=W, padx =10)
I_Label = Label(root, text='Invoice Path:', bg='#A2B5CD', fg='black',font=('Calibri', 12))
I_Label.grid(row=1, sticky=W, padx =10)


var = StringVar(root)
var.set('Choose Carrier...')
option = OptionMenu(root, var, 'DHL','DPD','DX','Fedex','Geodis','Hermes','WN Direct')
option.config(relief=RAISED, highlightbackground='#A2B5CD')
option.grid(row=0,column=1, sticky=W, pady = 10)

browser = Button(root, text = 'Browse Invoice...', command=Choose_Path)
browser.grid(row=1, column=1, sticky=W, pady=10)


Button(root, text='Accept and Close').grid(column=1, sticky=S)

root.mainloop()

如有任何反馈,我们将不胜感激。提前谢谢。在


Tags: pathtext用户路径tkintervarcolumnroot
2条回答

通过综合你的反馈和一个额外的功能,我现在似乎得到了我需要的结果。看看下面的样子。在

from Tkinter import *
from tkFileDialog import askopenfilename
path = []

def Choose_Path():
    Tk().withdraw()
    path.append(askopenfilename())

def CloseGUI():
    root.quit()
    root.destroy()

root = Tk()
root.geometry('400x400')
root.configure(background='#A2B5CD')

C_Label = Label(root, text='Carrier Choice:', bg='#A2B5CD', fg='black',font=('Calibri', 12))
C_Label.grid(row=0,sticky=W, padx =10)
I_Label = Label(root, text='Invoice Path:', bg='#A2B5CD', fg='black',font=('Calibri', 12))
I_Label.grid(row=1, sticky=W, padx =10)

var = StringVar(root)
var.set('Choose Carrier...')
option = OptionMenu(root, var, 'DHL','DPD','DX','Fedex','Geodis','Hermes','WN Direct')
option.config(relief=RAISED, highlightbackground='#A2B5CD')
option.grid(row=0,column=1, sticky=W, pady = 10)

browser = Button(root, text = 'Browse Invoice...', command=Choose_Path)
browser.grid(row=1, column=1, sticky=W, pady=10)
b1 = Button(root, text='Accept and Close', command = CloseGUI).grid(column=1, sticky=S)
mainloop()

print var.get()
print path

谢谢你的帮助!+1

两个问题:

你要结束你的循环。从您调用root.mainloop()的那一刻起,在您关闭Tk窗口之前,当前程序不会向下一行(您没有,但我假设您将在您的最终程序中)前进。在

-主循环结束后,您需要在某个地方有变量值。目前,option对象(它是一个OptionMenu实例)将包含值if你的载体,所以你可以做类似option.get()的操作。 文件名稍微复杂一些,因为您没有将其存储在某处:从Choose_Path()返回它,但是返回值没有存储在任何地方。可能你必须将这个值存储在一个全局中。(这种存储必须发生在Choose_Path内,例如FileName = askopenfilename()而不是{})。在

相关问题 更多 >