簡體   English   中英

您可以在 Tkinter 條目小部件中分離輸入嗎?

[英]Can you seperate the Input in a Tkinter Entry widget?

所以我想用 Tkinter 編寫一個程序,在其中輸入一些東西(比如香蕉、蘋果、西瓜),然后我想把這些東西放在一個列表中。 我可以通過.get function 以某種方式分離輸入嗎?

from tkinter import *
from random import *

root = Tk()
Eingabe=Entry(root)
l = list()
eget=l.append(Eingabe.get)

def rNdm():

    x = randint(0, 3)
    for r in l:
        if l.index(r) == x:
            print(r)
            myLabel=Label(root, text=r)
            myLabel.pack()

Eingabe=Entry(root)
Eingabe.pack()

myButton = Button(root, text="Rndm", command=rNdm)
myButton.pack()

root.mainloop()

這是我到現在為止的代碼,但它只打印出類似的東西。 這是 Tkinter Window

(如果您想知道為什么代碼看起來如此未排序,我只是一個初學者)

您在get()中忘記了() ) 。

get()給出普通字符串,因此您可以使用.split(",")將字符串"Bananas,Apple,Watermelone"轉換為列表["Bananas", "Apple", "Watermelone"]

但是您還有其他問題: Entry()不像input()那樣工作 - 它不會等待您的文本。 它只通知tkinter它必須在 window 中顯示什么小部件。 並且mainloop()開始一切。 它顯示帶有小部件的 window。 因此,您的代碼在您甚至可以在屏幕上看到之前嘗試從Entry獲取文本 - 所以它只能獲取空字符串。 您必須在使用Button運行的 function rNdm中運行它。

在大多數 GUI 中也是如此——不僅在 Python 中。


順便提一句:

要從列表中獲取隨機元素,您可以使用random.choice(your_list)


最小的工作代碼:

import tkinter as tk  # PEP8: `import *` is not preferred
import random         # PEP8: `import *` is not preferred

# --- functions ---

def rNdm():
    global l  # inform function to use external variable when you will assign value (`=`) to this variable
    
    text = eingabe.get()
    l = text.split(",")
    random_item = random.choice(l)
    my_label['text'] = random_item  # replace text in existing `Label`

    print('l:', l)
    print('random_item:', random_item)
    
# --- main ---

l = list()   # it is global variable

root = tk.Tk()

eingabe = tk.Entry(root)  # PEP8: `lower_case_names` for variables
eingabe.pack()

my_button = tk.Button(root, text="Rndm", command=rNdm)
my_button.pack()

my_label = tk.Label(root)  # without text
my_label.pack()

root.mainloop()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM