对话框中的用户输入

问题描述 投票:0回答:5

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)
python python-3.x user-interface tkinter
5个回答
13
投票

您有两种解决方案选择。有两个包可以pip获取,一个是easygui,另一个是easygui_qt。 easygui 基于 tcl,而 easygui_qt 基于 qt 窗口管理器,设置起来稍微困难一些,但使用起来同样简单,还有更多选项。

他们需要使用的只是导入包,

import easygui
,之后,要获得用户响应,您将使用一行...

myvar = easygui.enterbox("What, is your favorite color?")

Google“python easygui”以获取更多详细信息。
你可以从pypi获取easygui。


9
投票

我认为这是在没有任何外部东西的情况下你能得到的最短的时间:


开始:

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()
作为您下一步要做的事情。


3
投票

这是我不久前创建的一个模块,用于使用 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()

它包括如何使用它的示例。


2
投票

使用乌龟。

turtle.textinput("title", "prompt")

这是一个例子:

from turtle import textinput

name = textinput("Name", "Please enter your name:")

print("Hello", name + "!")

1
投票
from tkinter import simpledialog
item = simpledialog.askstring("New Item", "Enter name of item:")
print(item)

https://docs.python.org/3/library/dialog.html tkinter 不需要太多行:)

© www.soinside.com 2019 - 2024. All rights reserved.