或者也许是懒惰的方式..
我正在寻找一个 python 模块,它具有一些内置的 GUI 方法来获得快速的用户输入——一个非常常见的编程案例。必须在 Windows 7 上工作
我的理想案例
import magicGUImodule
listOfOptions = ["option 1", "option 2", "option 3"]
choosenOptions = magicGUImodule.getChecklist(listOfOptions,
selectMultiple=True, cancelButton=True)
这有点像raw_input
,但有一个 GUI。因为这是一个常见的编程任务,所以肯定有一些东西。
更新
@alecxe,我未选中您的答案作为我问题的解决方案,这并不失礼。我仍然希望能够在我正在处理的任何脚本中使用我的理想案例,而您的回答让我成功了一半。
我以为我可以轻松地将@alecxe 的解决方案实现到一个模块中,但这并不是那么简单(对我来说)..
到目前为止,这是我的模块:
# This serve as a module to get user input - the easy way!
# Some GUI selection
#from Tkinter import *
import Tkinter
master = Tkinter.Tk()
input = None
listbox = None
def chooseFromList(list, windowTitle="Choose from list", buttonText="Submit", selectMultiple=False, w=150, h=30):
global listbox
listbox = Tkinter.Listbox(master, selectmode=MULTIPLE if selectMultiple else SINGLE, width=w, height=h)
listbox.master.title(windowTitle)
for option in list:
listbox.insert(0, option)
listbox.pack()
#listbox.selection_set(1)
b = Tkinter.Button(master, command=callback(listbox), text=buttonText)
b.pack()
mainloop()
def callback(listbox):
global listbox
setInput(listbox.selection_get())
master.destroy()
def setInput(var):
global input
input = var
def getInput():
global input
return input
这是我的脚本
import GetUserInput
listOfOptions = ["option 1", "option 2", "option 3"]
choice = GetUserInput.chooseFromList(listOfOptions)
print choice.getInput()
但我只是得到错误
can't invoke "listbox" command: application has been destroyed
尝试了很多不同的选项,我虽然可以解决这个问题(比如使用全局变量) - 但没有任何运气。
更新 2
@blablatros 为我提供了我正在寻找的解决方案。