我刚刚开始用Python/Tkinter为一个小的Pymol插件编写代码。在这里,我试图有一个切换按钮,并报告其状态时,点击。按钮会上下移动,但不会调用toggleAVA
。你知道为什么吗?
from Tkinter import *
import tkMessageBox
class AVAGnome:
def __init__(self, master):
# create frames
self.F1 = Frame(rootGnome, padx=5, pady=5, bg='red')
# checkbuttons
self.AVAselected = IntVar()
self.AVAselected.trace("w", self.toggleAVA)
self.AVAbutton = Checkbutton(self.F1, text='AVA', indicatoron=0, variable=self.AVAselected)
# start layout procedure
self.layout()
def layout(self):
self.F1.pack(side=TOP, fill=BOTH, anchor=NW)
#entry and buttons
self.AVAbutton.pack(side=LEFT)
def toggleAVA(self, *args):
if (self.AVAselected.get()):
avastatus = "selected"
else:
avastatus = "unselected"
tkMessageBox.showinfo("AVA status", avastatus)
def __init__(self):
open_GnomeUI()
def open_GnomeUI():
# initialize window
global rootGnome
rootGnome = Tk()
rootGnome.title('AVAGnome')
global gnomeUI
gnomeUI = AVAGnome(rootGnome)
我在下面附上了你的代码的工作版本。你可以参考它来了解你错在哪里。通常,如果您使用的是类格式,您必须注意如何构造代码。这将帮助您可视化代码并更好地进行调试。您可以阅读此讨论来帮助您。
from Tkinter import *
import tkMessageBox
class AVAGnome(Frame):
def __init__(self, parent):
Frame.__init__(self, parent)
# create frames
self.F1 = Frame(self, padx=5, pady=5, bg='red')
# checkbutton
self.AVAselected = IntVar()
self.AVAselected.trace("w", self.toggleAVA)
self.AVAbutton = Checkbutton(
self.F1, text='AVA', indicatoron=0, width=10,
variable=self.AVAselected)
# start layout procedure
self.F1.pack(side=TOP, fill=BOTH, anchor=NW)
self.AVAbutton.pack(side=LEFT) #entry and buttons
def toggleAVA(self, *args):
if (self.AVAselected.get()):
avastatus = "selected"
else:
avastatus = "unselected"
tkMessageBox.showinfo("AVA status", avastatus)
if __name__ == '__main__':
rootGnome = Tk()
rootGnome.title('AVAGnome')
gnomeUI = AVAGnome(rootGnome)
gnomeUI.pack(fill="both", expand=True)
gnomeUI.mainloop()
更新:上述代码结构适用于独立tkinter程序。我正在尝试转换此工作代码,以遵循Pymol插件示例。修订后的代码张贴在下面,可能会进一步修订。
# https://pymolwiki.org/index.php/Plugins_Tutorial
# I adapted from the example in the above link and converted my previous code to
#
from Tkinter import *
import tkMessageBox
def __init__(self): # The example had a self term here.
self.open_GnomeUI()
class AVAGnome(Frame):
def __init__(self, parent):
Frame.__init__(self, parent)
# create frames
self.F1 = Frame(self, padx=5, pady=5, bg='red')
# checkbutton
self.AVAselected = IntVar()
self.AVAselected.trace("w", self.toggleAVA)
self.AVAbutton = Checkbutton(
self.F1, text='AVA', indicatoron=0, width=10,
variable=self.AVAselected)
# start layout procedure
self.F1.pack(side=TOP, fill=BOTH, anchor=NW)
self.AVAbutton.pack(side=LEFT) #entry and buttons
def toggleAVA(self, *args):
if (self.AVAselected.get()):
avastatus = "selected"
else:
avastatus = "unselected"
tkMessageBox.showinfo("AVA status", avastatus)
# Note, I added a "self" term throughout function.
# Try w/ & w/o "self" to see which works.
def open_GnomeUI(self):
self.rootGnome = Tk()
self.rootGnome.title('AVAGnome')
self.gnomeUI = AVAGnome(self.rootGnome)
self.gnomeUI.pack(fill="both", expand=True)
self.gnomeUI.mainloop()
我用Pymol测试了你的代码。
问题是因为您使用Tk()
来创建窗口。您必须使用Toplevel()
,然后它才能与trace()
或command=
一起正常工作。
Pymol
是使用tkinter
创建的,它只能使用Tk()
创建一个窗口-它是程序中的主窗口。每隔一个窗口都必须使用Toplevel()
创建。
import "runtime/trace" Go execution tracer. The tracer captures a wide range of execution events like goroutine creation/blocking/unblocking, syscall enter/exit/block, GC-related events, changes of he
问题内容: 我有一个Checkbutton和一个与之关联的对象,但是当我尝试获取的值时,我正在接收。 这是我的代码: 我为什么要得到? 问题答案: 是对对象的引用。您需要调用其方法来访问其表示的值:
Xdebug allows you to log all function calls, including parameters and return values to a file in different formats. Those so-called "function traces" can be a help for when you are new to an applicati
此命令用于返回NetRexx使用的当前跟踪设置。 语法 (Syntax) trace 参数 (Parameters) 没有 返回值 (Return Value) NetRexx使用的当前跟踪设置。 例子 (Example) /* Main program */ say trace 当我们运行上述程序时,我们将得到以下结果。 输出 (Output) Off
模块:Trace 目的: 监控程序语句和函数运行情况,并且产生报告信息. python版本:2.3+ trace - 跟踪正在执行的Python语句 trace模块帮助你明白程序的运行过程. 你可以跟踪执行的语句, 产生报表, 也能获取函数间的调用关系. 命令行接口 可以很简单的直接从命令行使用trace. 给定以下的Python脚本: from recurse import recurse d
kubectl-trace 是一个 kubectl 插件,它可以使用基于 bpftrace 的编程能力,来分析系统的性能问题。你只需编写好程序文件,就可以通过这个插件将其运行到 K8s 集群中,不需要任何额外工作。 架构
Trace Viewer 是 Chrome 和 Android Systrace 的 JavaScript 前端。它提供给各种类型的跟踪文件提供强大的分析和可视化能力,在跟踪 Linux kernel 和 Chrome 的 trace_event format 上尤其有用。Trace Viewer 可作为一个组件嵌入到你的代码中。
console-trace 扩展了Node.JS的本地console对象,以CallSite信息给日志功能添加前缀 如何使用: require('console-trace') 你可以添加t或者trace的getter方法来调用以获得stacktrace: console.t.log('a');console.trace.log('aaa');