- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一起问这些问题是因为我觉得他们在一起。做一个的方式影响我必须如何做另一个。我是计算机科学/编程/python 新手。
我有一个很长、很复杂的脚本,它不包含任何用户定义的函数。它接受输入并对其进行操作以形成输出。我用 Tkinter 构建了一个 GUI,供用户输入数据。我想在我的 GUI 主循环中运行我的脚本,并让脚本向 GUI 打印状态更新和错误。
GUI 打印错误 :我已经搜索并搜索了可能的解决方案,但我没有设法破解它。
Using a subprocess 看起来最有希望,但我相信子进程必须是 .exe 文件才能使其正常工作。我只有一个 Python 脚本,不知道如何将某些东西转换为可执行文件(但无论如何我需要尽快学习)。至于该页面上带有 sys 模块的第二个响应,我只是不明白“run_script”函数中发生了什么以将其应用于我自己的 GUI。
There's this "show error" solution 但我也不确定我是否真的理解这一点。这是否是说我需要将 Try...Except...
放在我的下标中的所有函数上并让它返回一个消息框?呸。我真的更喜欢像在命令结果/IDE中那样打印异常并退出命令。该页面上的回溯解决方案是否会是一种一次性的事情,我在我的 GUI 中声明过一次并让它适用于 GUI 中的所有功能?还是每次执行计算时都必须调用该 show_error 函数?
合并下标 :我意识到合并下标的方式会影响消息在 GUI 中的打印方式。我的下标 ( print "Loading modules..."
) 中有一堆打印语句,让用户知道程序正在运行。在继续之前,这是我正在使用的代码示例。
这是我的 GUI 代码的缩短版本:
import Tkinter
###____________Widgets__________________###
class InputBox(Tkinter.Tk):
def __init__(self,parent):
Tkinter.Tk.__init__(self, parent)
self.parent = parent
self.initialize()
def initialize(self):
# Frame
self.OK = Tkinter.Frame(self, padx=3, pady=3)
self.OK.grid(column=2, row=2, columnspan=3, sticky="EW")
self.printFrame = Tkinter.LabelFrame(self, borderwidth=3, relief="ridge", padx=3, pady=3, text="Results")
self.printFrame.grid(column=0, row=3, columnspan=4, sticky="EW")
# Approval
self.OKbutton = Tkinter.Button(self.OK, text=u"OK", command=self.OKgo, anchor="e")
self.OKbutton.pack(side="right")
self.view = Tkinter.Text(self.printFrame)
self.view.grid(column=0, row=0, columnspan=3, sticky="EW")
self.scroll = Tkinter.Scrollbar(self.printFrame, orient=Tkinter.VERTICAL)
self.scroll.config(command=self.view.yview)
self.view.config(yscrollcommand=self.scroll.set)
self.scroll.grid(column=4, row=0, sticky="SN")
def OKgo(self):
# Load Inputs
DEMin = self.demEntryVar.get()
WTin = self.wtEntryVar.get()
soil = self.soilEntryVar.get()
# Convert soils shapefile to raster and assign integer values to HSG.
# A=1, B=2, C=3, 4=D and dual groups A/D=14, B/D=24, C/D=34
# "---" is treated as a D soil
import arcpy
print("Converting dual group soils to single groups...")
SoilUnclass = arcpy.PolygonToRaster_conversion(soil, "HSG", ScratchPath + r"\SoilUnclass", "MAXIMUM_COMBINED_AREA")
SoilClass = arcpy.sa.Reclassify(SoilUnclass, "HSG", arcpy.sa.RemapValue([["A", 1],
["B", 2],
["C", 3],
["D", 4],
["A/D", 14],
["B/D", 24],
["C/D", 34],
["---", 4]]), "NODATA")
SoilClass.save(ScratchPath + r"\HSGras")
OKgo
函数中,我可以通过将所有打印语句更改为
self.view.insert("end", "Converting soils... \n")
来将其打印到 Text 小部件。据我了解,将我的整个下标粘贴到
OKgo
函数中是不可取的,因为它会卡住 GUI 并且通常很长。下标可能需要很长时间才能运行,所以这不是首选。
OKgo
函数中单独调用它们,例如
import subscript as ss
ss.soilconvert(soil)
Try...Except...
事情,甚至认为它会卡住 GUI。但是,需要一个函数的输出作为下一个函数的输入,但我不知道如何调用它们。我也不知道如何将
print
语句转换为可以读入 Text 小部件的内容。
execfile
的东西,但我觉得将输出输入到 Text 小部件中更加困难。 :/我不知道任何编程约定,也不知道什么会更容易调试/更新。我需要一些方向,拜托。谢谢。
multiprocessing
版本创建了一个单线程版本。我做了这样的事情:
Python multiprocessing redirect stdout of a child process to a Tkinter Text 捕获
stdout
并将其打印到 GUI。我仍在尝试使异常正常工作。以与重定向
sys.stderr
相同的方式重定向
sys.stdout
不起作用,但我还没有尝试
sys.excepthook
的事情。
最佳答案
您可以使用 sys.excepthook
捕获所有异常并显示它们。 : 只是
将其替换为您自己的功能,该功能将打开一个消息框
如果需要,错误回溯并退出:
import sys, traceback
def my_except_hook(type, value, traceback):
exception_string = "".join(traceback.format_exception(type, value, traceback))
# do whatever you want from here
print exception_string
sys.excepthook = my_except_hook
execfile
解决方案
sys.stdout
和
sys.stderr
,但是使用
subprocess
模块可能更适合避免损坏
关于python - 两件事 : 1) Printing errors/tracebacks/exceptions to GUI and 2) The best way to utilize a script within a script,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31814802/
上下文 我有一个日间 TUMBLINGWINDOW(类似于下面所示的) SELECT DATEADD(day, -1, System.Timestamp()) AS WindowStart
因此,我正在开发一个非常小的 Web 组件,以作为更大的设计系统的一部分。 我对网络组件的使用有点陌生,但我知道这个特定的网络组件可以在一个布局中使用很多很多次。 此 Web 组件控制在传递给它的任何
我刚刚开发了一个 Android 应用程序(minSdkVersion 23/targetSdkVersion 29),可以连接到 BluetoothLE 设备以定期获取数据。 现在,在 MainAc
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 9 年前。 Improve
我一直在阅读有关 Airplay SDK 和 Dragonfire SDK 的内容。这些是在没有 Mac 的情况下进行 iphone 开发的合法选择吗?大家有更好的解决办法吗? 最佳答案 由于签名等原
我正在考虑使用 DTO 而不是传递我的域对象。我在这里和其他地方都读过几篇文章,我知道有几种方法可以完成这项工作。 如果我总共只有大约 10 个域类,并且考虑到我想在我的 View (WPF 前端)中
我的问题是,如果我有一个列表 list = [1,2,3,4,5,6,7] 如果我想知道这个列表中元素的数量,是len(list) 或 list.count 更好的选择?还是 .count 仅适用于来
我想知道 Django Rest Framework 的最佳实践。我一直通过每个用户使用不同的序列化程序(员工、帐户所有者、其他人)和 HTTP 方法来限制更改帐户上某些属性的访问权限,但我觉得这太不
我有数百个用于测试组件的脚本。这些脚本中的每一个都包含一组下标和单独的记录。 下标可以在多个 TC_Level 脚本中使用,甚至可以在其他下标中使用。 每个脚本都有一个唯一的名称。 例子: TC_1
我正在建立一个以两种语言提供产品信息的网站:英文和中文。 每个产品必须有英文名称,也可以有中文名称。 每次请求产品页面时,request检查对象以确定产品名称应该以英文还是中文显示。在后一种情况下,如
场景:应用程序具有可以启用某些优化的算法。默认情况下,有些是打开的,有些是关闭的。在 Java 中是否有一种方便的方法来实现某种全局属性系统? 要求: 必须很容易两次使用不同的设置运行程序的多个实例
我从事嵌入式工作,我有一些管理硬件的软件模块。这个模块有状态,状态转换很复杂:根据事件,模块可以从状态 A 到状态 B 或者可能到 C .但是,当它退出某个状态时,它应该对硬件执行一些操作,以使其也保
我有一个免费网站,可以流式传输实时股票期权数据。我想让用户制作并保存他们自己的 JavaScript 可调用工具来解释选项数据。用户可以调用这些自定义工具来帮助他们自己做出有关期权的买卖决定。 但对于
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 2 年前。 社区在 6 个
我不是 DBA,我不知道什么是最好的解决方案。我有两个表, Custumers Table CustomerId (primary key, identity) ... 和 Suppliers Tab
关闭。这个问题是opinion-based .它目前不接受答案。 想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题. 7年前关闭。 Improve t
我一直在阅读关于版本控制主题的所有问题,但我认为我没有找到一个看起来像我自己的场景。 场景是: 我们有一个中型/大型 Web 应用程序,它有(至少应该有)一个部署到所有客户端的核心。当我们向客户演示应
我希望根据继承来组织一些项目,目的是确定哪些项目是连接最密集的父项,并且还只是看到形成的连接。 通常这将通过拓扑排序来完成,但我的图有循环。是否有类似“尽力而为”拓扑排序的东西,它可以尝试根据连接数或
以下在 JQuery 中附加事件处理程序的方法有什么区别? (function () { var $body = $("body"); $('button').click(functi
我是一名优秀的程序员,十分优秀!