在python中从GUI获取整数和字符串输入

2024-04-16 08:10:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在寻找一个库来从Python中的用户获取整数和字符串输入。一些Google搜索指向使用Tkinter和'Tkinter Entry',但是现在我如何为整数编码它,为字符串编码另一个呢?

我试图创建一个简单的输入框,将一个整数作为输入并将该整数赋给某个变量。


Tags: 字符串用户编码tkintergoogle整数指向entry
2条回答

如果您想要一个真正的GUI,那么tkinter是最简单的方法,但是如果您只想要简单的原始输入,那么input()工作得很好。

示例:

test=input('prompt:') #take input
print(test*10) #print it ten times

simpledialog随python 3.x一起提供,并且有一个弹出窗口,上面有一个输入框。但不像input()那么简单

下面的代码提供了使用tkinter和Entry小部件获取用户输入或使用tkinter.simpledialog显示用户输入值的窗口的示例。

这里有一个有用的guide来使用tkinter。像你这样的初学者还有很多

代码:

import tkinter as tk
from tkinter.simpledialog import askstring, askinteger
from tkinter.messagebox import showerror


def display_1():
    # .get is used to obtain the current value
    # of entry_1 widget (This is always a string)
    print(entry_1.get())

def display_2():
    num = entry_2.get()
    # Try convert a str to int
    # If unable eg. int('hello') or int('5.5')
    # then show an error.
    try:
       num = int(num)
    # ValueError is the type of error expected from this conversion
    except ValueError:
        #Display Error Window (Title, Prompt)
        showerror('Non-Int Error', 'Please enter an integer')
    else:
        print(num)

def display_3():
    # Ask String Window (Title, Prompt)
    # Returned value is a string
    ans = askstring('Enter String', 'Please enter any set of characters')
    # If the user clicks cancel, None is returned
    # .strip is used to ensure the user doesn't
    # enter only spaces ' '
    if ans is not None and ans.strip():
        print(ans)
    elif ans is not None:
        showerror('Invalid String', 'You must enter something')

def display_4():
    # Ask Integer Window (Title, Prompt)
    # Returned value is an int
    ans = askinteger('Enter Integer', 'Please enter an integer')
    # If the user clicks cancel, None is returned
    if ans is not None:
        print(ans)

# Create the main window
root = tk.Tk()

# Create the widgets
entry_1 = tk.Entry(root)
btn_1 = tk.Button(root, text = "Display Text", command = display_1)

entry_2 = tk.Entry(root)
btn_2 = tk.Button(root, text = "Display Integer", command = display_2)

btn_3 = tk.Button(root, text = "Enter String", command = display_3)
btn_4 = tk.Button(root, text = "Enter Integer", command = display_4)

# Grid is used to add the widgets to root
# Alternatives are Pack and Place
entry_1.grid(row = 0, column = 0)
btn_1.grid(row = 1, column = 0)
entry_2.grid(row = 0, column = 1)
btn_2.grid(row = 1, column = 1)

btn_3.grid(row = 2, column = 0)
btn_4.grid(row = 2, column = 1)

root.mainloop()

相关问题 更多 >