我一直在使用 tkinter 创建 gui 。
我希望从用户接收文件名作为输入,打开文件并显示一个消息框,其中包含由函数生成的文本。
以下是代码,有人可以解释为什么这不起作用吗?
import tkinter as tk
import csv
import tkinter.simpledialog
import tkinter.messagebox
from tkinter import ttk
file=tkinter.simpledialog.askstring("File: ","Enter your file name")
with open(file, 'r') as f: #this line reads the file
reader = csv.reader(f, delimiter=',')
output=values
def values(): #And this is the function
print("Some text")#which should return whatever info is inside 'print' function
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
self.controller = controller
button = ttk.Button(self, text="Submit", #I prefer using the button but any other way will do
command=tkmessagebox.showinfo("Results",output))
button.pack()
我得到“名字'tksimpledialog'未定义”错误。
答案 0 :(得分:2)
你需要一个窗口让askstring函数起作用:
...
window = tk.Tk()
window.withdraw() #hides the window
file = tkinter.simpledialog.askstring("File: ","Enter your file name")
...
然后您的行存在一些问题:
output=values
它应该放在函数定义之后,而不是之前。 并在末尾包含括号。喜欢:
def values(): #And this is the function
print("Some text")
# which should return whatever info is inside 'print' function
output=values()
这解决了我在尝试运行脚本时遇到的错误。