Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.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_Hide_Wxwidgets_Show - Fatal编程技术网

Python 数据库加载面板屏幕静态文本在显示时模糊

Python 数据库加载面板屏幕静态文本在显示时模糊,python,hide,wxwidgets,show,Python,Hide,Wxwidgets,Show,数据库加载面板屏幕静态文本在显示时模糊 你好, 我有一个奇怪的问题,加载屏幕。问题是:当我从主屏幕开始,然后单击“下一步”按钮, 它进入数据库加载屏幕,完成后,在屏幕上打印数据库加载完成 问题是加载屏幕文本由于某种原因而模糊。另外,我发现如果你弹出一个消息对话框 框中,将显示加载文本 在本例中,我并没有实际加载到实际的数据库中。相反,我只是睡了七秒钟 如果你对我所说的感到困惑,只需运行这个示例,你就会看到加载屏幕上乱七八糟的 代码如下: import wx import time class

数据库加载面板屏幕静态文本在显示时模糊

你好,

我有一个奇怪的问题,加载屏幕。问题是:当我从主屏幕开始,然后单击“下一步”按钮, 它进入数据库加载屏幕,完成后,在屏幕上打印数据库加载完成

问题是加载屏幕文本由于某种原因而模糊。另外,我发现如果你弹出一个消息对话框 框中,将显示加载文本

在本例中,我并没有实际加载到实际的数据库中。相反,我只是睡了七秒钟

如果你对我所说的感到困惑,只需运行这个示例,你就会看到加载屏幕上乱七八糟的

代码如下:

import wx
import time

class TextPanel(wx.Panel):

    def __init__(self, parent, label):

        self.__myParent = parent    
        wx.Panel.__init__(self, self.__myParent, size = (800, 800))        
        staticText = wx.StaticText(self, label = label)

class MainPanel(wx.Panel):

    def __init__(self, parent):

        self.__myParent = parent    
        wx.Panel.__init__(self, self.__myParent, size = (800, 800))
        nextButton = wx.Button(self, label = 'Next')
        nextButton.Bind(wx.EVT_BUTTON, self.__onNext)

    def __onNext(self, event):

        self.__myParent.onNextScreen()

class MainFrame(wx.Frame):  

    def __init__(self):

        # Base contsructor.
        wx.Frame.__init__(self, None, id = -1, title = 'Testing...', size = (800, 800))

        self.__myMainPanel = MainPanel(self)
        self.__myMainPanel.Show()

        self.__myDatabase = TextPanel(self, 'Loading Data...')
        self.__myDatabase.Hide()

        self.__myFinalPanel = TextPanel(self, 'Database Loading Complete!')
        self.__myFinalPanel.Hide()

    def onNextScreen(self):

        self.__myMainPanel.Hide()
        self.__myDatabase.Show()

        self.doDatabaseLoad()

        self.__myDatabase.Hide()
        self.__myFinalPanel.Show()

    def doDatabaseLoad(self):    

        time.sleep(7) # before, this method would load data into a database...

if __name__ == '__main__':
    app = wx.App()
    frame = MainFrame()
    frame.Show(True)
    app.MainLoop()

    print 'Exiting...'

谢谢大家的帮助

我找到了解决这个问题的简单方法。 我首先发现,每当事件处理程序方法返回时,都会调用wx.Panel.Update()来重新绘制屏幕。因此,加载面板看起来似乎需要重新绘制,因为静态文本框都是灰色的。然后我在self.\uuMyDatabase.Show()之后调用self.\uuMyDatabase.Update()。 以下是新版本的onNextScreen(self):


另外,另一种修复方法是在静态文本上调用SetLabel,但上面的解决方案更好。似乎更新不是自动调用的,因为它是在事件的中间……/P>什么操作系统/工具包?什么版本?什么wxPython/python版本?我正在使用python2.7.13(64位)和wxpython3.0.2.0什么操作系统?什么版本?什么工具包?什么版本?我正在运行Windows 7 Professional SP1 x64。工具包是wx版本3.0.2.0I刚刚注意到,如果在静态文本对象上调用SetLabel('label'),标签将变为可见。为什么呢?
def onNextScreen(self):

    self.__myMainPanel.Hide()
    self.__myDatabase.Show()

    self.__myDatabase.Update() # Fixes the bug...

    self.doDatabaseLoad()

    self.__myDatabase.Hide()
    self.__myFinalPanel.Show()