我是一個使用 GUI 和 tkinter 的新手。
我試圖通過我用 tkinter 實作的 GUI 從用戶那里獲得 2 個輸入。在用戶輸入并按下按鈕后,我想回傳這兩個輸入并繼續用這兩個輸入做其他事情。我檢查了 Tkinter 文本條目的回傳值,關閉 GUI,但它不適用于我的情況。
我試過的是這樣的:
_gui.py
import tkinter as tk
def get_input():
entry1 = entry1.get()
entry2 = entry2.get()
return entry1, entry2
root = tk.Tk()
root.geometry("320x240 800 300")
label1 = tk.Label(text="Label1")
label1.config(font=('Helvetica bold',16))
label1.pack()
entry1 = tk.Entry(root)
entry1.config(font=('Helvetica bold',16))
entry1.pack()
label2 = tk.Label(text="Label2")
label2.config(font=('Helvetica bold',16))
label2.pack()
entry2 = tk.Entry(root)
entry2.config(font=('Helvetica bold',16))
entry2.pack()
button = tk.Button(root, text="Start", command=get_input)
button.config(font=('Helvetica bold',16))
button.pack()
root.mainloop()
在 main.py 中:
import _Gui as gui
if __name__ == "__main__":
a, b = gui.get_input()
something_else(a, b)
但它也沒有奏效。
提前感謝您的幫助!
uj5u.com熱心網友回復:
您可以使用root.destroy()來銷毀視窗,但是該函式get_input()會在您按下按鈕后執行兩次(另一個是在視窗被銷毀后,在您的“main.py”中),所以如果您在第一次執行時銷毀了視窗,您不能用entry1.get()。
我建議你使用這個:
(_Gui.py)
import tkinter as tk
root = tk.Tk()
root.geometry("320x240 800 300")
def get_input():
global a, b
a = entry1.get()
b = entry2.get()
root.destroy()
label1 = tk.Label(text="Label1")
label1.config(font=('Helvetica bold',16))
label1.pack()
entry1 = tk.Entry(root)
entry1.config(font=('Helvetica bold',16))
entry1.pack()
label2 = tk.Label(text="Label2")
label2.config(font=('Helvetica bold',16))
label2.pack()
entry2 = tk.Entry(root)
entry2.config(font=('Helvetica bold',16))
entry2.pack()
button = tk.Button(root, text="Start", command=get_input)
button.config(font=('Helvetica bold',16))
button.pack()
(main.py)
import _Gui as gui
if __name__ == "__main__":
gui.root.mainloop()
something_else(gui.a, gui.b)
(對不起,我的英語不是很好。)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/504277.html
下一篇:PythonTypeError:changeMaster.__init__()缺少1個必需的位置引數:'parent'
