當在主“根”視窗中按下新視窗按鈕時,我試圖打開一個新視窗。這目前有效,并且確實打開了第二個視窗。在第二個視窗中,我想詢問用戶輸入,然后該輸入將轉換為字串串列。
一個示例輸入是"Amy, Bob, Carl". 預期的輸出是['Amy', 'Bob', 'Carl'],但目前程式只是回傳['']。
我目前的代碼是:
from tkinter import *
root = Tk()
root.title("Welcome screen")
root.geometry("300x300")
def open_new_window():
top = Toplevel()
top.title("second window")
entities = Entry(top)
entries = entities.get().split(", ")
entities.pack()
entities.focus_set()
print(entries)
sub_button = Button(top, text="Submit", command= ?)
sub_button.pack(pady=20)
close_btn = Button(top, text="Close", command=top.destroy)
close_btn.pack()
open_button = Button(root, text="New Window", command=open_new_window)
open_button.pack(pady=20)
exit_button = Button(root, text="Close", command=root.destroy)
exit_button.pack(pady=20)
root.mainloop()
我是 Tkinter 的新手,我不確定為什么會這樣。我確定這是一個簡單的愚蠢錯誤,但我找不到哪里出錯了。我也不確定是否需要提交按鈕,因為我不知道應該將什么命令傳遞給它。
任何建議表示贊賞。如果需要任何其他資訊,請告訴我。
uj5u.com熱心網友回復:
首先,我們將理解為什么你得到一個空串列:你的代碼是按順序執行的,所以當你這樣做時,entities.get()你還沒有寫任何東西,也沒有按下“提交”,也就是說,你想在按下“提交”,而不是更早,因此,您擁有command = ?. 據我所知,您主要有兩種選擇:
- 從按鈕本身獲取文本
- 創建一個鏈接到輸入框的變數并閱讀此內容
方法一:從entry中讀取資料
from tkinter import *
root = Tk()
root.title("Welcome screen")
root.geometry("300x300")
def do_stuff(entry):
print(entry.get())
def open_new_window():
top = Toplevel()
top.title("second window")
entities = Entry(top)
entities.pack()
entities.focus_set()
sub_button = Button(top, text="Submit", command= lambda: do_stuff(entities))
sub_button.pack(pady=20)
close_btn = Button(top, text="Close", command=top.destroy)
close_btn.pack()
open_button = Button(root, text="New Window", command=open_new_window)
open_button.pack(pady=20)
exit_button = Button(root, text="Close", command=root.destroy)
exit_button.pack(pady=20)
root.mainloop()
方法2:鏈接變數
from tkinter import *
root = Tk()
root.title("Welcome screen")
root.geometry("300x300")
def do_stuff(text_entry):
print(text_entry.get())
def open_new_window():
top = Toplevel()
top.title("second window")
text_entry = StringVar()
entities = Entry(top, textvariable = text_entry)
entities.pack()
entities.focus_set()
sub_button = Button(top, text="Submit", command= lambda: do_stuff(text_entry))
sub_button.pack(pady=20)
close_btn = Button(top, text="Close", command=top.destroy)
close_btn.pack()
open_button = Button(root, text="New Window", command=open_new_window)
open_button.pack(pady=20)
exit_button = Button(root, text="Close", command=root.destroy)
exit_button.pack(pady=20)
root.mainloop()
最后一種方法的主要優點是您可以在構建條目之前和之后使用文本。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/437485.html
