如何解决从 tkinter.Text 获取输入并打印结果
我一直在开发一个用于清理 URL 和 IP 地址的 GUI 程序。目前,我想清理输入和打印结果的 “打印” 按钮不起作用。我的其他功能按照我希望的方式工作,这些功能已经过测试。
在 printOut() 函数中,该代码片段在我之前使用的 CLI 版本中有效。
我已经包含了我的 GUI 界面的屏幕截图,以显示我想要的结果。对我的代码的任何帮助将不胜感激。
import tkinter as tk
from tkinter import messageBox
from tkinter import filedialog
# help information -- works
def help_info():
h = messageBox.showinfo("Help","This program is used to defang/sanitise URLs and IP addresses.\n"
"\nEnter a URL or IP address into the top input field and have it printed to the 'Results' output or,save it to a file.")
# Print sanitised results out
# not working
def printOut():
url = inputTextBox.get(1.0,"end-1c")
if "http" in url:
url = url.replace("http","hxxp")
url = url.replace(":","[:]")
url = url.replace(".","[.]")
elif "https" in url:
url = url.replace("https","hxxps")
url = url.replace(":","[.]")
elif "http" not in url:
url = url.replace(".","[.]")
elif "https" not in url:
url = url.replace(".","[.]")
return(url)
# save output to a file -- works
def save_as():
save_output = filedialog.asksaveasfile()
# quit the program -- works
def quit_program():
are_you_sure = messageBox.askquestion("Quit","Are you sure?")
if are_you_sure == 'yes':
mainWindow.destroy()
else:
mainWindow.mainloop()
# Create mainWindow,not resizeable
mainWindow = tk.Tk()
mainWindow.title("Defang")
mainWindow.geometry("585x355-730-400")
mainWindow.resizable(False,False)
# label for user input
input_label = tk.Label(mainWindow,text="Enter URL(s) and or IP Address(s)",font="Arial 9")
input_label.place(x=7,y=5)
# input textBox
inputTextBox = tk.Text(mainWindow,width=70,height=8)
inputTextBox.place(x=10,y=25)
# label for output
output_label = tk.Label(mainWindow,text="Results",font="Arial 9")
output_label.place(x=7,y=165)
# results textBox
outputTextBox = tk.Text(mainWindow,height=8)
outputTextBox.place(x=10,y=185)
# help button
help_button = tk.Button(mainWindow,text="Help",padx=20,pady=0,command=help_info)
help_button.place(x=100,y=325)
# print button
print_button = tk.Button(mainWindow,text="Print",command=printOut)
print_button.place(x=200,y=325)
# save button
save_button = tk.Button(mainWindow,text="Save",command=save_as)
save_button.place(x=300,y=325)
# exit button
exit_button = tk.Button(mainWindow,text="Exit",command=quit_program)
exit_button.place(x=400,y=325)
# run the program
mainWindow.mainloop()
解决方法
printOut
函数不起作用,因为在替换 URL 后您没有将它插入到 outputTextbox
中。在 printout
函数中的所有条件之后,您应该从中替换 return url
代码。
outputTextbox.insert(1.0,url)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。