[英]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.