Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python ';清扫';点栏实现_Python_Wxpython - Fatal编程技术网

Python ';清扫';点栏实现

Python ';清扫';点栏实现,python,wxpython,Python,Wxpython,好的,我意识到这不是一个很清楚的标题,所以希望这能让它更清楚一点(如果有人能给它起个更清楚的名字,我会感谢你的帮助!) 我正在为我的幼儿园班级创建一个点跟踪器。我在脑海中看到的是一个底部为0,顶部为100的条形图,还有一个颜色渐变点条形图,可以从0到100上下扫描。当他们点击触摸屏时,酒吧冻结,他们的团队得到x分,其中x是酒吧冻结的数字 现在,我正在开发移动条的功能(甚至还没有设置冻结/中断)。我把这些放在一起,但感觉真的很不雅观和丑陋 def score_inc(): x = 0

好的,我意识到这不是一个很清楚的标题,所以希望这能让它更清楚一点(如果有人能给它起个更清楚的名字,我会感谢你的帮助!)

我正在为我的幼儿园班级创建一个点跟踪器。我在脑海中看到的是一个底部为0,顶部为100的条形图,还有一个颜色渐变点条形图,可以从0到100上下扫描。当他们点击触摸屏时,酒吧冻结,他们的团队得到x分,其中x是酒吧冻结的数字

现在,我正在开发移动条的功能(甚至还没有设置冻结/中断)。我把这些放在一起,但感觉真的很不雅观和丑陋

def score_inc():
    x = 0
    while x < 100:
        x += 1
        time.sleep(0.01)
    while x > 100:
        x -= 1
        time.sleep(0.01)
def score_inc():
x=0
当x<100时:
x+=1
睡眠时间(0.01)
当x>100时:
x-=1
睡眠时间(0.01)
更不用说,我有理由相信这段代码会阻止操作,这意味着我无法显示/更新图形


这是我第一次尝试GUI编程,所以我非常谨慎,在编写图形前端之前尝试编写一个无GUI的后端,这是错误的路线吗?如果没有更好的术语,有没有一种更平滑、更不难看的方法来使用“GUI感知”的函数来实现类似的功能?

在wxPython中,您可能希望使用wx.Slider,尽管我认为它不支持您所要的颜色。但是,您可以将滑块事件绑定到可以为您执行此操作的wx.GCDC或wx.PaintDC。我会向wxPython用户组询问其他建议


关于time.sleep()阻塞GUI主循环的说法是对的。如果这样做,GUI将不会响应。相反,您应该使用wx.Timer。这是一个很好的例子。您可以将time.sleep()放入线程中,但我认为这太过分了,会使其变得不必要的复杂。

实现条移动的最简单方法不是单独的函数,而是与中断在同一个循环中:

def barLoop():
    current_score = 0
    increment = True
    while True:
        ## HANDLE INTERRUPT HERE ##
        if increment:
            current_score += 1
            if current_score == 100: #stop incrementing at 100
                increment = False
        else:
            current_score -= 1
            if current_score == 0: #start incrementing again at 0
                increment = True 

这样做的优点是保留score变量的公开性,以便被中断捕获。在if/else块中可以调用以图形方式更新条位置所需的任何GUI函数。这将阻止任何其他事件循环,因此最好将其用作主循环,处理退出和需要响应的任何其他事件。

嗯,颜色基本上是可选的。这比什么都更像是装腔作势。我将查看wxpython的幻灯片,如果我将自定义CPU小部件与我现在得到的代码结合起来,它看起来正好。这个周末我要试试,看看它看起来怎么样!很抱歉延迟接受。我正在利用空闲时间做这件事,争取在10月份完成。我接受了这个答案,因为你提供的链接正是我所需要的。谢谢