Tag: tkinter

关于tkinter中的bindtags的基本查询

在这篇文章给出的例子中,有人提到,如果使用默认的绑定标签,那么事件的值在定义里面是不可见的(会有一个滞后)。 关于类绑定有一些解释。 我是初学者,所以想了解详细的原因。 有些人可以解释为什么它不是在第一种情况下工作,并在第二种情况下工作(当绑定标签的顺序被修改时)。 import Tkinter def OnKeyPress(event): value = event.widget.get() string="value of %s is '%s'" % (event.widget._name, value) status.configure(text=string) root = Tkinter.Tk() entry1 = Tkinter.Entry(root, name="entry1") entry2 = Tkinter.Entry(root, name="entry2") entry3 = Tkinter.Entry(root, name="entry3") entry1.bindtags(('.entry1', 'Entry', '.', 'all')) entry2.bindtags(('Entry', '.entry1', '.', 'all')) entry3.bindtags(('.entry1','Entry','post-class-bindings', '.', 'all')) btlabel1 = Tkinter.Label(text="bindtags: %s" % " ".join(entry1.bindtags())) btlabel2 = […]

dynamic更新matplotlib中的图

我正在Python中进行一个应用程序,它从一个串行端口收集数据,并根据到达时间绘制所收集数据的graphics。 数据到达的时间是不确定的。 我希望在收到数据时更新图表。 我search了如何做到这一点,发现了两种方法: 清除情节,重新绘制所有点的情节。 通过在特定的时间间隔之后更改曲线来使曲线animation化。 我不喜欢第一个程序运行并收集数据很长一段时间(例如一天),并且重绘图很慢。 第二个也是不可取的,因为数据的到达时间是不确定的,我希望只有在收到数据时才更新图。 只有当数据被接收时,我才能通过增加更多的点来更新图表吗?

如何更新matplotlib中的情节?

我在这里重绘图的问题。 我允许用户在时间尺度(x轴)中指定单位,然后重新计算并调用这个函数plots() 。 我希望情节只是更新,而不是附加另一个情节的数字。 def plots(): global vlgaBuffSorted cntr() result = collections.defaultdict(list) for d in vlgaBuffSorted: result[d['event']].append(d) result_list = result.values() f = Figure() graph1 = f.add_subplot(211) graph2 = f.add_subplot(212,sharex=graph1) for item in result_list: tL = [] vgsL = [] vdsL = [] isubL = [] for dict in item: tL.append(dict['time']) vgsL.append(dict['vgs']) vdsL.append(dict['vds']) isubL.append(dict['isub']) graph1.plot(tL,vdsL,'bo',label='a') graph1.plot(tL,vgsL,'rp',label='b') […]

你如何与Tkinter的事件循环一起运行自己的代码?

我的小弟弟正在进行编程,他的科学博览会项目正在模拟一群天空中的鸟儿。 他的大部分代码都已经写好了,而且效果很好,但是鸟儿需要随时移动。 但是,Tkinter花费了自己事件循环的时间,所以他的代码不会运行。 做root.mainloop()运行,运行,并继续运行,它唯一运行的事件处理程序。 有没有办法让他的代码与主循环一起运行(没有multithreading,这是混乱,这应该保持简单),如果是这样,它是什么? 现在,他想出了一个丑陋的黑客,将他的move()函数绑定到<b1-motion> ,这样只要他按下button并且摆动鼠标,它就可以工作。 但是有一个更好的方法。

构buildtkinter应用程序的最佳方式

以下是我典型的python tkinter程序的总体结构。 def funA(): def funA1(): def funA12(): # stuff def funA2(): # stuff def funB(): def funB1(): # stuff def funB2(): # stuff def funC(): def funC1(): # stuff def funC2(): # stuff root = tk.Tk() button1 = tk.Button(root, command=funA) button1.pack() button2 = tk.Button(root, command=funB) button2.pack() button3 = tk.Button(root, command=funC) button3.pack() funA funB和funC会在用户点击button1,2,3之后,带出一些带有小部件的Toplevel窗口。 我想知道这是否是正确的方式来编写一个python […]

如何使用tkinter创build一个计时器?

我需要用Python的tkinter库来编写一个程序。 我的主要问题是,我不知道如何创build一个像hh:mm:ss的计时器或时钟 。 我需要它来更新自己(这是我不知道该怎么做)。

将一个滚动条添加到Tkinter中的一组控件中

我正在使用Python来parsing日志文件中的条目,并使用Tkinter显示条目内容,迄今为止已经非常出色。 输出是一个标签小部件的网格,但有时会有更多的行比可以显示在屏幕上。 我想添加一个滚动条,看起来应该很容易,但我无法弄清楚。 文档暗示只有List,Textbox,Canvas和Entry小部件支持滚动条界面。 这些似乎都不适合显示小部件的网格。 可以在Canvas小部件中放置任意的小部件,但似乎必须使用绝对坐标,所以我将无法使用网格布局pipe理器? 我试图把部件网格放入一个框架,但似乎并不支持滚动界面,所以这是行不通的: mainframe = Frame(root, yscrollcommand=scrollbar.set) 任何人都可以提出一个方法来绕过这个限 我不希望在PyQt中重写,并增加我的可执行文件的大小,只是添加一个滚动条!

在tkinter中交互validationEntry widget的内容

交互式validationtkinter Entry小部件中的内容的推荐技术是什么? 我已经阅读了关于使用validate=True和validatecommand=command ,并且似乎这些function受限于事实,即如果validatecommand命令更新Entry小部件的值,它们将被清除。 鉴于此行为,我们是否应该绑定KeyPress , Cut和Paste事件,并通过这些事件监视/更新Entry元素的值? (和我可能错过的其他相关事件?) 或者,我们应该忘记交互式validation,只有在FocusOut事件上validation?

在tkinter中的两帧之间切换

我已经build立了我的第一个几个脚本与一个很好的小graphics用户界面,如教程显示了我,但他们都没有解决如何做一个更复杂的程序。 如果你有一个“开始菜单”的东西,对于你的开始屏幕,并根据用户的select,你移动到程序的不同部分,并适当地重画屏幕,这样做的优雅方式是什么? 是否只是.destroy()的“开始菜单”框架,然后创build一个新的填充与另一部分的部件? 当他们按下后退button时,逆转这个过程?

Tkinter:AttributeError:NoneType对象没有属性get

我已经看到类似的错误消息,但没有find一个解决scheme,将解决它在我的情况下的其他几个职位。 我用TkInter尝试了一下,创build了一个非常简单的用户界面。 代码如下 – from string import * from Tkinter import * import tkMessageBox root=Tk() vid = IntVar() def grabText(event): if entryBox.get().strip()=="": tkMessageBox.showerror("Error", "Please enter text") else: print entryBox.get().strip() root.title("My Sample") root.maxsize(width=550, height=200) root.minsize(width=550, height=200) root.resizable(width=NO, height=NO) label=Label(root, text = "Enter text:").grid(row=2,column=0,sticky=W) entryBox=Entry(root,width=60).grid(row=2, column=1,sticky=W) grabBtn=Button(root, text="Grab") grabBtn.grid(row=8, column=1) grabBtn.bind('<Button-1>', grabText) root.mainloop() 我启动并运行了UI。 当我点击Grabbutton时,在控制台上出现以下错误: C:\Python25>python.exe myFiles\testBed.py […]