在pyProgress中按下时如何设置取消按钮 [英] how to set Cancel button when you press it in pyProgress

查看:25
本文介绍了在pyProgress中按下时如何设置取消按钮的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

您好,我使用 wxpython 4windows10.我想将 PyProgress (AGW)Cancel 按钮集成到我的应用程序中 和我想这个按钮 Cancel 把我的应用程序 Paused.除了我添加了取消按钮但它不可点击并且我无法使用此按钮绑定暂停功能.

Hello I use wxpython 4 and windows10.I want to integrate PyProgress (AGW) in my App with the Cancel button and I would like this button Cancel put my App Paused. except that I have add the cancel button but it is not clickable and I can not Bind a pause function with this button.

import wx.lib.agw.pyprogress as PP

def onButton(self, event):
        """
        Based on the wxPython demo by the same name
        """
        event.Skip()
        dlg = PP.PyProgress(None, -1, "Demo", "Demo in progress", agwStyle=wx.PD_APP_MODAL | wx.PD_ELAPSED_TIME | wx.PD_CAN_ABORT)
        dlg.SetGaugeProportion(0.2)
        dlg.SetGaugeSteps(50)
        dlg.SetGaugeBackground(wx.WHITE)
        dlg.SetFirstGradientColour(wx.WHITE)
        dlg.SetSecondGradientColour(wx.BLUE)
        max = 400
        keepGoing = True
        count = 0

        while keepGoing and count < max:
            count += 1
            wx.MilliSleep(30)

            if count >= max / 2:
                keepGoing = dlg.UpdatePulse("Half-time!")
            else:
                keepGoing = dlg.UpdatePulse()

        dlg.Destroy()

#if(wx.PD_CAN_ABORT):
#execute onPause(event)


def onPause(self, event):
???

推荐答案

PyProgress 似乎不再具有可操作的 Cancel 按钮.
使用 wx.ProgressDialogwx.Gauge 代替.

PyProgress no longer appears to have an operational Cancel button.
Use wx.ProgressDialog or wx.Gauge instead.

如果您不想要暂停功能,请使用以下内容:

If you don't want a pause function use something like this:

import wx

class PyProgressDemo(wx.Frame):
    def __init__(self, parent):
        super().__init__(parent)

        self.panel = wx.Panel(self, -1)
        self.startbutton = wx.Button(self.panel, -1, "Start PyProgress!")
        self.startbutton.Bind(wx.EVT_BUTTON, self.onButton)
        vbox = wx.BoxSizer(wx.VERTICAL)
        vbox.Add(self.startbutton)
        self.panel.SetSizer(vbox)
        self.Show()

    def onButton(self, event):
            self.dlg = wx.ProgressDialog('Search personal Data', 'Analyse en cours..', style= wx.PD_ELAPSED_TIME | wx.PD_CAN_ABORT)
            max = 400
            keepGoing = True
            count = 0
            while keepGoing and count < max:
                count += 1
                wx.MilliSleep(30)

                if count >= max / 2:
                    (keepGoing, skip) = self.dlg.Pulse("Half-time!")
                else:
                    (keepGoing, skip) = self.dlg.Pulse()

            self.dlg.Destroy()

app = wx.App()
prog = PyProgressDemo(None)
app.MainLoop()

如果你想要一个 Pause 功能,我认为你必须使用 Freeze 选项,就像这样:

If you want a Pause function, I think that you will have to use the Freeze option, something like this:

import wx

class PyProgressDemo(wx.Frame):
    def __init__(self, parent):
        super().__init__(parent)

        self.panel = wx.Panel(self, -1)
        self.startbutton = wx.Button(self.panel, -1, "Start PyProgress!")
        self.stopbutton = wx.Button(self.panel, -1, "Pause/Unpause PyProgress!")
        self.startbutton.Bind(wx.EVT_BUTTON, self.onButton)
        self.stopbutton.Bind(wx.EVT_BUTTON, self.onPause)
        vbox = wx.BoxSizer(wx.VERTICAL)
        vbox.Add(self.startbutton)
        vbox.Add(self.stopbutton)
        self.panel.SetSizer(vbox)
        self.Show()

    def onButton(self, event):
            self.dlg = wx.ProgressDialog('Search personal Data', 'Analyse en cours..', style= wx.PD_ELAPSED_TIME | wx.PD_CAN_ABORT)
            max = 400
            keepGoing = True
            count = 0

            try:
                while keepGoing and count < max:
                    if self.dlg.IsFrozen():
                        wx.Yield()
                        wx.MilliSleep(30)
                        continue
                    count += 1
                    wx.MilliSleep(30)

                    if count >= max / 2:
                        (keepGoing, skip) = self.dlg.Pulse("Half-time!")
                    else:
                        (keepGoing, skip) = self.dlg.Pulse()

                self.dlg.Destroy()
            except:
                pass

    def onPause(self, event):
        try:
            if self.dlg.IsFrozen():
                self.dlg.Thaw()
            else:
                self.dlg.Freeze()
        except:
            pass

app = wx.App()
prog = PyProgressDemo(None)
app.MainLoop()

这篇关于在pyProgress中按下时如何设置取消按钮的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆