在pyProgress中按下时如何设置取消按钮 [英] how to set Cancel button when you press it in pyProgress
问题描述
您好,我使用 wxpython 4
和 windows10
.我想将 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.ProgressDialog
或 wx.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屋!