将 tkinter.Entry 输入到 if/else 语句中 [英] Getting tkinter.Entry input into if/else statements

查看:27
本文介绍了将 tkinter.Entry 输入到 if/else 语句中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我当前的代码,我使用这里不同答案的不同答案对其进行了多次更改.问题是我试图找到一种方法让代码根据用户通过 tkinter.Entry() 输入输出不同的答案.

Here is my current code, which I have changed multiple times using different answers of different answered questions on here. The problem is I am trying to find a way to get the code to output different answers according to the user input through the tkinter.Entry().

例如,如果用户输入screen",那么代码会给出一些关于屏幕的信息.如果用户输入Python",则代码将打印与 Python 编程语言有关的内容.

For example, if the user inputs "screen" then the code will give out something about screens. If user inputs "Python" then the code will print something to do with python programming language.

我能够通过 .get() 函数获取代码来打印用户在按钮点击时输入的内容,但是这样它就不会与 if/else 语句通信.

I am able to get the code to print what the user inputed on button click through the .get() function, however this way it will not communicate with the if/else statements.

import tkinter

root = tkinter.Tk()
root.geometry("300x300")
root.title("Try code")

entry = tkinter.Entry(root)
entry.pack()

def on_button():
    if entry.get() == "Screen""screen":
        slabel = tkinter.Label(root, text="Screen was entered")
        slabel.pack()
    else:
        tlabel = tkinter.Label(root, text="")
        tlabel.pack()

button = tkinter.Button(root, text="Enter", command=on_button)
button.pack()

root.mainloop()

<小时>

任何帮助将不胜感激.


Any help would be greatly appreciated.

推荐答案

可以将字符串转为小写,只与"screen"

You can convert string to lower case and compare only with "screen"

 if entry.get().strip().lower() == "screen":

我使用 strip() 删除字符串两端的空格,因为有时用户可以输入额外的空格,即.屏幕"

I use strip() to remove spaces at the both ends of string because sometimes user can enter extra spaces ie. " screen "

或者你可以使用in

 if entry.get().strip() in ("Screen", "screen", "Monitor", "monitor"):

 if entry.get().strip().lower() in ("screen", "monitor"):

因为它更短

 if entry.get().strip() == "Screen" or entry.get().strip() == "screen" or entry.get().strip() == "Monitor" or entry.get().strip() == "monitor":

 if entry.get().strip().lower() == "screen" or entry.get().strip().lower() == "monitor":

你也可以在if/else

 answer = entry.get().strip().lower()

 if answer in ("screen", "monitor"):
     # ...
 elif answer in ("mouse", "trackball"):
     # ...
 elif answer == "keyboard":
     # ...

工作示例

import tkinter as tk

# --- functions ---
# `bind` sends `event` to function so it has to receive it
# `command=` doesn't sends `event` so it need some default value - ie. None
def on_button(event=None): 

    answer = entry.get().strip().lower()

    if answer in ("screen", "monitor"):
        # change text in existing label
        label['text'] = "Your {} is dirty. I can't see you.".format(answer)

    elif answer in ("mouse", "trackball"):
        label['text'] = "Your {} is too slow for me".format(answer)

    else:
        label['text'] = "{0}? What is {0}?".format(answer)

# --- main ---

root = tk.Tk()
root.geometry("300x300")
root.title("Try code")

entry = tk.Entry(root)
entry.pack()

# run function when in `entry` you press `ENTER` on keyboard 
entry.bind('<Return>', on_button) 

button = tk.Button(root, text="Enter", command=on_button)
button.pack()

label = tk.Label(root)
label.pack()

# activate `entry` so you don't have to click in `entry` to start typing
entry.focus() 

root.mainloop()

这篇关于将 tkinter.Entry 输入到 if/else 语句中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆