Python 中是否有任何库可用于图形用户输入。我知道
tk
但我相信需要一些代码才能做到这一点。我正在寻找最短的解决方案。
a = input('Enter your string here:')
代替这个,我想要一个对话框,以便用户可以在那里输入。
这没有达到目的。这仅显示对话框,您无法提供输入条目。
import ctypes # An included library with Python install.
ctypes.windll.user32.MessageBoxW(0, "Your text", "Your title", 1)
您有两种解决方案选择。有两个包可以pip获取,一个是easygui,另一个是easygui_qt。 easygui 基于 tcl,而 easygui_qt 基于 qt 窗口管理器,设置起来稍微困难一些,但使用起来同样简单,还有更多选项。
他们需要使用的只是导入包,
import easygui
,之后,要获得用户响应,您将使用一行...
myvar = easygui.enterbox("What, is your favorite color?")
Google“python easygui”以获取更多详细信息。
你可以从pypi获取easygui。
我认为这是在没有任何外部东西的情况下你能得到的最短的时间:
开始:
from tkinter import *
root=Tk()
而不是
a=input('enter something')
:
a=StringVar()
Label(root, text='enter something').pack()
Entry(root, textvariable=a).pack()
Button(root, text='Ok', command=lambda:DoSomethingWithInput(a.get)).pack()
有功能
DoSomethingWithInput(a)
而不是
print('some text')
:
Label(root, text='some text').pack()
Button(root, text='Ok', command=DoSomething).pack()
将
DoSomething()
作为您下一步要做的事情。
这是我不久前创建的一个模块,用于使用 GUI 管理基本打印和输入。它使用 tkinter:
from tkinter import *
def donothing(var=''):
pass
class Interface(Tk):
def __init__(self, name='Interface', size=None):
super(interface, self).__init__()
if size:
self.geometry(size)
self.title(name)
self.frame = Frame(self)
self.frame.pack()
def gui_print(self, text='This is some text', command=donothing):
self.frame.destroy()
self.frame = Frame(self)
self.frame.pack()
Label(self.frame, text=text).pack()
Button(self.frame, text='Ok', command=command).pack()
def gui_input(self, text='Enter something', command=donothing):
self.frame.destroy()
self.frame = Frame(self)
self.frame.pack()
Label(self.frame, text=text).pack()
entry = StringVar(self)
Entry(self.frame, textvariable=entry).pack()
Button(self.frame, text='Ok', command=lambda: command(entry.get())).pack()
def end(self):
self.destroy()
def start(self):
mainloop()
# -- Testing Stuff --
def foo(value):
main.gui_print(f'Your name is {value}.', main.end)
def bar():
main.gui_input('What is your name?', foo)
if __name__ == '__main__':
main = interface('Window')
bar()
main.start()
它包括如何使用它的示例。
使用乌龟。
turtle.textinput("title", "prompt")
这是一个例子:
from turtle import textinput
name = textinput("Name", "Please enter your name:")
print("Hello", name + "!")
from tkinter import simpledialog
item = simpledialog.askstring("New Item", "Enter name of item:")
print(item)
https://docs.python.org/3/library/dialog.html tkinter 不需要太多行:)