请教关于tkinter界面的刷新问题

jackhejie 2012-12-15 06:02:19
我把matplotlib嵌入到了tkinter的界面中,按一下命令按钮就可以画出坐标图,但是发现

按了按钮后界面上不会马上更新,需要拉动一下窗口边界,或者最大化窗口才能显示出坐标图,不知道什么原因。求高手指点~万分感谢
...全文
2636 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
jackhejie 2012-12-23
  • 打赏
  • 举报
回复
 def draw_picture():
          f.clear()
          b= f.add_subplot(1,1,1)
          x=[1,2,3,4,5,6,7,8,9,10]
          y=[3,6,9,12,15,18,21,24,27,30]
          x_=[1,2,3,4,5,6,7,8,9,10]
          y_=[2,4,6,8,10,12,14,16,18,20]
          b.legend(('total energy','system energy'),loc=2)
          b.set_xlabel('N')
          b.set_ylabel('energy')
          b.grid(True)
          b.plot(x_,y_,'g-o',x,y,'b-o')
          canvas.draw()
b.legend(('total energy','system energy'),loc=2)这句在坐标图上为什么只有一个空的小正方形。。。标注怎么没显示。。。求教啊。。。。
ChongQingJin28 2012-12-23
  • 打赏
  • 举报
回复
“~”代表的是空格~~~2.7实验成功
def~draw_picture():
~~~~~~~~f.clear()
~~~~~~~~a~=~f.add_subplot(111~)
~~~~~~~~a.set_xlabel("x-label") # 只需要加这两行就可以了
~~~~~~~~a.set_ylabel("x-label")
~~~~~~~~t~=~arange(0.0,3.0~,0.01)

#还要改成下面这样,否则label会只显示一部分,数字可以调整
canvs.get_tk_widget().pack(side=TOP ,fill=BOTH ,expand =1,ipady = 60,ipadx = 90)

为什么你的不行呢?
ChongQingJin28 2012-12-23
  • 打赏
  • 举报
回复
a.plot(x_,y_,"g-o",x,y,'b-o')
a.legend(('total energy','system energy'),loc=2)

兄弟!我发现了一个问题,鱼与渔的问题
我想你应该学会自己捕鱼。

help(a.legend)会提示你去看demo
如果没有demo,可以找google要!
jackhejie 2012-12-22
  • 打赏
  • 举报
回复
再请教一下,请问在def draw_picture()中如何加入语句 使得产生的坐标图坐标轴有名称,比如我希望x轴名称是“N”,y轴名称是“Energy”. xlabel ylabel好像不能用
ChongQingJin28 2012-12-18
  • 打赏
  • 举报
回复
“~”代表的是空格 2.7实验成功
def~draw_picture():
~~~~~~~~f.clear() #清空背景图片,否则会出错 其余的不变
~~~~~~~~a~=~f.add_subplot(111~)
~~~~~~~~t~=~arange(0.0,3.0~,0.01)
~~~~~~~~s~=~sin(2*pi*t)
~~~~~~~~a.plot(t,s)
~~~~~~~~canvs.draw()

def~draw_background():
~~~~~~~~from~PIL~import~Image #如果没有pil 可以下载一个
~~~~~~~~a~=~f.add_subplot(111~)
~~~~~~~~a.set_axis_off() #关闭axis
~~~~~~~~image~=~Image.open("c:\\lena.gif") #打开图片
~~~~~~~~image~=~image.rotate(180) #旋转180度。不旋转会倒过来
~~~~~~~~a.imshow(image) #显示图片
~~~~~~~~canvs.draw()
~~~~~~~~
canvs~=~FigureCanvasTkAgg(f,root)
canvs.get_tk_widget().pack(side=TOP~,fill=BOTH~,expand~=1)
draw_background() #绘制背景色

原本以为可以用tk来画,发现画不出来,只好改变方法!
jackhejie 2012-12-18
  • 打赏
  • 举报
回复
非常感谢你的帮助~~
jackhejie 2012-12-17
  • 打赏
  • 举报
回复
再请教一下,还是上面的代码,如何在一开始的界面上显示出一张图片作为背景,而不是灰灰的一块。。
jackhejie 2012-12-16
  • 打赏
  • 举报
回复
同样十分感谢你!!解决了我卡了很久的一个问题~
ChongQingJin28 2012-12-16
  • 打赏
  • 举报
回复
“~”代表空格
def~draw_picture():
~~~~a~=~f.add_subplot(111~)
~~~~t~=~arange(0.0,3.0~,0.01)
~~~~s~=~sin(2*pi*t)
~~~~a.plot(t,s)
~~~~canvs.draw() # 只需加上这一句话就够了 python2.7可以正常运行

我还以为matplotlib是基于wxPython的呢。原来不仅仅是wxPython,他还支持Qt,Gtk等,也包括tk

谢谢你的帖子!
panghuhu250 2012-12-16
  • 打赏
  • 举报
回复
没有代码,只能乱猜。更新内容后调用root.update_idletasks()试试。
jackhejie 2012-12-16
  • 打赏
  • 举报
回复
import matplotlib
matplotlib.use('TkAgg')
from numpy import arange, sin, pi
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg
from matplotlib.figure import Figure
from tkinter import*

root=Tk()
root.wm_title("Embedding in TK")
def _quit():
    root.quit()
    root.destroy()

f = Figure(figsize=(5,4), dpi=100)
def draw_picture():
   a = f.add_subplot(111)
   t = arange(0.0,3.0,0.01)
   s = sin(2*pi*t)
   a.plot(t,s)
  
canvas = FigureCanvasTkAgg(f,root)
canvas.get_tk_widget().pack(side=TOP, fill=BOTH, expand=1)

Button(root,text="work",command=draw_picture,bg="lightpink").pack()
Button(root, text="quit",command=_quit,bg="lightpink").pack()
Label(root, text="Hello").pack()


mainloop()
代码已贴,求帮助啊~~update好像没什么作用
jackhejie 2012-12-16
  • 打赏
  • 举报
回复
import matplotlib matplotlib.use('TkAgg') from numpy import arange, sin, pi from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg from matplotlib.figure import Figure from tkinter import* root=Tk() root.wm_title("Embedding in TK") def _quit(): root.quit() root.destroy() f = Figure(figsize=(5,4), dpi=100) def draw_picture(): a = f.add_subplot(111) t = arange(0.0,3.0,0.01) s = sin(2*pi*t) a.plot(t,s) canvas = FigureCanvasTkAgg(f,root) canvas.get_tk_widget().pack(side=TOP, fill=BOTH, expand=1) Button(root,text="work",command=draw_picture,bg="lightpink").pack() Button(root, text="quit",command=_quit,bg="lightpink").pack() Label(root, text="Hello").pack() mainloop()

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧