или, возможно, ленивый способ.
Я ищу модуль python, который имеет встроенные GUI-методы для быстрого ввода данных пользователя - очень распространенный случай программирования. Должен работать над окнами 7
Мой идеальный случай
import magicGUImodule
listOfOptions = ["option 1", "option 2", "option 3"]
choosenOptions = magicGUImodule.getChecklist(listOfOptions,
selectMultiple=True, cancelButton=True)
Это похоже на raw_input
, но с графическим интерфейсом. Там должно быть что-то, потому что это общая задача программирования.
UPDATE
@alecxe не должно быть грубым, что я не проверял ваш ответ как решение моей проблемы. Я все еще хочу использовать мой идеальный случай в любом script, над которым я работаю, и ваш ответ получает меня наполовину.
Я думал, что могу легко реализовать решение @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
И вот мой script
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 дал мне именно то решение, которое я искал.