栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何从一个窗口(类)到另一个窗口获取progressbar start()信息?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何从一个窗口(类)到另一个窗口获取progressbar start()信息?

以下是您的代码的有效版本。我不得不解决许多问题,因为从我的回答到有关进度条的其他问题,您没有更改代码中的许多内容。

此处主要问题的答案基本上是,您必须传递实例,并在涉及的各种类实例中需要时记住该实例,以便他们的方法

self
在需要时可以通过参数使用它。同样,您试图派生和覆盖
tkSimpleDialog.Dialog
基类方法的方法也过于复杂且不正确。

通常是最好的(最简单的)事情做的仅仅是提供自己

validate()
apply()
因为这是它是如何设计的工作方法。如果您还需要自己的
__init__()
构造函数,则仅将参数传递给子类的基础方法即可,这一点很重要。如果需要更多功能,通常可以通过其他仅派生类的方法来提供,只有它或您也创建的其他类才知道。

无论如何,这就是我最终得到的结果:

import Tkinter, ttk, tkFileDialog, tkSimpleDialog, time, threadingclass App:    def __init__(self, master):        self.progress_line(master)    def progress_line(self, master):        # the value of "maximum" determines how fast progressbar moves        self._progressbar = ttk.Progressbar(master, mode='indeterminate', maximum=4) # speed of progressbar        self._progressbar.place(anchor='ne', height="20", width="150",x="175", y="30")    @property    def progressbar(self):        return self._progressbar # return value of private memberclass AppMenu(object):  def __init__(self, master, progressbar):      self.master = master      self.menu_bar()      self.progressbar = progressbar  def menu_bar(self):      self.menu_bar = Tkinter.Menu(self.master)      self.master.config(menu=self.menu_bar)      self.create_menu = Tkinter.Menu(self.menu_bar, tearoff=False)      self.create_menu.add_command(label="do", command=self.do)      self.menu_bar.add_cascade(label="now", menu=self.create_menu)  def do(self):      Dialog(self.master, self.progressbar) # display the dialog boxclass Dialog(tkSimpleDialog.Dialog):    def __init__(self, parent, progressbar):        self.progressbar = progressbar        tkSimpleDialog.Dialog.__init__(self, parent, title="Do foo?")    def apply(self):        self.start_foo_thread()    # added dialog methods...    def start_foo_thread(self):        self.foo_thread = threading.Thread(target=self.foo)        self.foo_thread.daemon = True        self.progressbar.start()        self.foo_thread.start()        master.after(20, self.check_foo_thread)    def check_foo_thread(self):        if self.foo_thread.is_alive(): master.after(20, self.check_foo_thread)        else: self.progressbar.stop()    def foo(self): # some time-consuming function...        time.sleep(3)master = Tkinter.Tk()master.title("Foo runner")app = App(master)appmenu = AppMenu(master, app.progressbar)master.mainloop()

希望这可以帮助。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/646694.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号