如何使Tkinter条目小部件数据可用于其他功能

2024-04-24 14:06:03 发布

您现在位置:Python中文网/ 问答频道 /正文

在这段代码中,我花了很多时间试图用简单的条目小部件替换askinteger和askstring小部件。我确信有一种简单的方法可以从entry小部件传递信息,以便它可以用于代码中的其他函数,但是我所研究和尝试的一切都失败了。欢迎任何帮助。你知道吗

from tkinter import *
from tkinter.simpledialog import askinteger
from tkinter.simpledialog import askstring
from random import randrange


def read_file(words_file):
    with open(words_file, 'r') as f:  # Read the text file
        wordList = []  # Create an empty string called wordList
        for line in f:  # For every line in the text file
            wordList += line.split()  # Add another item to the list
        f.close()
        return wordList  # Return the list


def select_word(wordList, word):
    wordLength = 0

    length = askinteger("Letters", "How Many Letters?")  # Ask user for      amount of letters

    while wordLength != length:
        wordNumber = randrange(0, len(wordList))  # Randomly select a number between 0 and length of wordList
        word = wordList[wordNumber]  # Select a word from the list using wordNumber
        word = word.upper()
        wordLength = len(word)  # Calculate the length of the selected word
    return word

def get_letter():

    letter = askstring("Please enter a letter", "Which letter would you like to try?")

    letter = letter.upper()  # Convert letter to uppercase
    return letter

这是我尝试过的事情。我还使用了stringvar。你知道吗

from tkinter import *

master = Tk()
e = Entry(master)
e.pack()
e.focus_set()

def callback():
    print (e.get())
    global fred
    fred = e.get()
    print(fred)
    return fred

b = Button(master, text="get", width=10, command=callback)
b.pack()

print(fred)

mainloop()

谢谢你的建议。我现在已经尝试了以下操作,但仍然无法使print(fred)函数正常工作。我肯定这是个愚蠢的错误,但我看不出我做错了什么。你知道吗

from tkinter import *

master = Tk()
e = Entry(master)
e.pack()
e.focus_set()

fred = ''      # declare fred in the outer scope

def callback():
    print (e.get())
    fred = (e.get())
    return fred  # removed global statement as I understand they should be avoided

b = Button(master, text="get", width=10, command=callback)
b.pack()

print(fred)

mainloop()

Tags: thetextfromimportmastergetreturntkinter
1条回答
网友
1楼 · 发布于 2024-04-24 14:06:03

必须在外部作用域中定义变量fred,才能检索它。(还有其他方法,但代码就是这样构造的):

from tkinter import *

master = Tk()
e = Entry(master)
e.pack()
e.focus_set()

fred = ''      # declare fred in the outer scope

def callback():
    print (e.get())
    global fred
    fred = e.get()
    print(fred)
    # return fred  # as fred is global, returning it is optional

b = Button(master, text="get", width=10, command=callback)
b.pack()

mainloop()

fred将包含从entry字段检索到的值,并可用于进一步处理

相关问题 更多 >