Пользовательский ввод в диалоговом окне - PullRequest
0 голосов
/ 20 мая 2018

Есть ли в 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)

Ответы [ 3 ]

0 голосов
/ 20 мая 2018

Вот модуль, который я создал некоторое время назад для управления базовой печатью и вводом с помощью графического интерфейса.Он использует 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()
if __name__=='__main__':
    def foo2(value):
        global main
        main.gui_print('Your name is '+value+'.', main.end)
    def foo1():
        global main
        main.gui_input('What is your name?', foo2)
    main=interface('Window')
    foo1()
    main.start()

Включает пример того, как его использовать.

0 голосов
/ 20 мая 2018

Я думаю, что это самое короткое время, которое вы получите без внешнего:


Для начала:

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() как то, что вы будете делать дальше.

0 голосов
/ 20 мая 2018

У вас есть два варианта решения.Вы можете получить два пакета, один из которых - easygui, а другой - easygui_qt.easygui основан на tcl, а easygui_qt основан на оконном менеджере qt и его немного сложнее настроить, но он также прост в использовании, с несколькими дополнительными опциями.

Все, что им требуется для использования, это импортировать пакет import easygui, и после этого, чтобы получить ответ пользователя, вы должны использовать одну строку ...

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

Google "pythoneasygui "для более подробной информации.Вы можете получить easygui от pypi .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...