簡體   English   中英

將Tkinter文本框條目轉換為Python變量

[英]Convert Tkinter textbox entry into Python Variable

(長問題)

我正在嘗試編寫一段代碼,當按下按鈕時,它將使用tkinter文本框從用戶那里獲取文件路徑。 然后,它將把該文本框條目轉換為附加到普通python變量的字符串,以便稍后可以在函數中使用該變量來使用該文件。 我附加的代碼可以使標簽復制文本框條目,但是我不能在“普通python代碼”中使用該變量或myvar。 另外,在代碼中,我嘗試通過函數mywarWritten返回myvar.get(),但是我無法將變量設置為與mywarWritten(parameters)相等,因為該變量取決於直到按下按鈕后才會發生的文本框條目。 當按下按鈕時,打印功能可以打印語句,但是當功能設置為嘗試時,它不會返回。

(簡而言之)

我想使用Tkinter文本框從用戶那里獲取一個值或字符串,並將該條目用作普通的python變量。 優選地,僅在按下按鈕時才采用文本框中的值。

from Tkinter import *
import Tkinter as tk

root = Tk()
root.title("MyApp")

myvar = StringVar()

def mywarWritten(*args):
    print "mywarWritten",myvar.get()
    please = myvar.get()
    return please

#trying to make the function return the textbox entry but fails
attempt = mywarWritten()
print "plz %s" % (attempt)

#trying to just set it equal too but also fails
python_variable = myvar.get()
label = Label(root, textvariable=myvar)
label.pack()

text_entry = tk.Entry(root, textvariable=myvar)
button1 = tk.Button(root, text="Back to Home", command=lambda: mywarWritten()) 
button1.pack()
text_entry.pack()

#trying attempt and pythonvariable in "normal python code"
print attempt
print pythonvariable
root.mainloop()

我在這里先向您的幫助表示感謝。

您似乎對范圍,導入,引用和功能有一些誤解。 myvar已經可以訪問了,訪問它所要做的就是get() it。 不要多次導入同一模塊,並盡量避免from x import * 將值返回給按鈕沒有任何意義,也沒有任何作用。 不在函數或類中的每一行代碼都將立即執行,因此attempt = mywarWritten()以及您在函數外部所做的所有其他幾次操作都會在程序運行后立即獲取StringVar的值,然后再執行任何操作在里面。 lambda: func()只是func

import Tkinter as tk

root = tk.Tk()
root.title("MyApp")

myvar = tk.StringVar()

def mywarWritten(*args):
    print "mywarWritten", myvar.get()

label = tk.Label(root, textvariable=myvar)
label.pack()

text_entry = tk.Entry(root, textvariable=myvar)
button1 = tk.Button(root, text="Back to Home", command=mywarWritten) 
button1.pack()
text_entry.pack()

root.mainloop()

每當您要訪問該條目小部件的內容時,只需執行myvar.get()

您還可以使用mywarWritten而不是my_var_written ,其中v表示var

總的來說,我強烈建議您閱讀官方的Python教程 (並使用Python 3,因為它比Python 2更好)。

暫無
暫無

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

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