Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.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
Wxpython wx Python:不可见/透明对话框_Wxpython_Wxwidgets - Fatal编程技术网

Wxpython wx Python:不可见/透明对话框

Wxpython wx Python:不可见/透明对话框,wxpython,wxwidgets,Wxpython,Wxwidgets,我有一个wx.Dialog和一个包含在滚动窗口面板中的wx.Grid。对话框由主框架上的菜单项启动,该菜单项不是对话框的父菜单项 有时,当我的对话框启动时,此面板中的内容不可见!如图所示: 我在创建GUI组件期间使用的打印语句正在执行,因此我不确定为什么对话框中偶尔没有内容 当这种情况开始发生时,我关闭并重新启动对话框,但是它经常连续发生多次,然后似乎自行解决,在第五次尝试时正常显示 还有其他人遇到过这种情况吗?原因是什么 我正在使用Ubuntu16.04LTS和wx.python3.0 编辑

我有一个wx.Dialog和一个包含在滚动窗口面板中的wx.Grid。对话框由主框架上的菜单项启动,该菜单项不是对话框的父菜单项

有时,当我的对话框启动时,此面板中的内容不可见!如图所示:

我在创建GUI组件期间使用的打印语句正在执行,因此我不确定为什么对话框中偶尔没有内容

当这种情况开始发生时,我关闭并重新启动对话框,但是它经常连续发生多次,然后似乎自行解决,在第五次尝试时正常显示

还有其他人遇到过这种情况吗?原因是什么

我正在使用Ubuntu16.04LTS和wx.python3.0

编辑:包括我认为可能存在问题的代码示例

我有一个“redraw”方法,由于ScrolledWindow,它被调用来计算对话框的大小。在wx.Grid的每一行旁边都有按钮,所以我不能允许wx.Grid处理它自己的滚动。在wx.Grid中添加新行后调用此方法

重画方法如下:

def redraw(self):
    # a change has been made to the file, reset saved boolean
    self.m_saved_or_cancelled = False
    # call these to update the view
    self.m_list_view.AutoSize() # this is the wx.Grid 
    self.m_list_view.Fit()
    self.scrolled_panel.Layout()
    self.Layout()
    self.Fit()

    # as we have a scrolledWindow panel - we must update the minimum size in order to display the view
    # the maximum size is the display size
    display_width, display_height = wx.DisplaySize()

    w, sizer_height = self.main_sizer.GetSize()

    # height of the rows
    button_height = 10
    # number of items
    items = self.m_list_view.GetNumberRows() + 1
    cols =  self.m_list_view.GetNumberCols()

    # column widths added together
    col_width = 100
    for col in range(cols):
        col_width += self.m_list_view.GetColSize(col)

    print "col_width %s" % col_width

    # height is at least the minimum or the row height * number of items
    height = button_height * items
    print "sizer_height %s, height %s" % (sizer_height, height)

    if height < self.MIN_WINDOW_HEIGHT:
        height = self.MIN_WINDOW_HEIGHT

    print "sizer_heighth %s, height %s" % (sizer_height, height)

    if height <= sizer_height:
        # increase by a factor of this space 2/3
        height += ((sizer_height)/3)
    print "height %s" % height

    if height > (display_height - self.MAX_WINDOW_HEIGHT_OFFSET):
        self.SetMinSize((col_width, display_height - self.MAX_WINDOW_HEIGHT_OFFSET))
        self.SetSize((col_width, display_height - self.MAX_WINDOW_HEIGHT_OFFSET))
    else:
        self.SetMinSize((col_width, height))
        self.SetSize((col_width, height))

    # the virtual size has to be greater than required space rather significantly in order to display correctly
    self.scrolled_panel.SetVirtualSize((col_width, height))
    self.scrolled_panel.AdjustScrollbars()
    self.scrolled_panel.Layout()
    # centered
    self.CenterOnScreen()
def重绘(自):
#已对文件进行更改,请重置保存的布尔值
self.m\u saved\u或\u cancelled=False
#调用这些来更新视图
self.m_list_view.AutoSize()#这是wx.Grid
self.m_list_view.Fit()
self.scrolled_panel.Layout()
self.Layout()
self.Fit()
#因为我们有一个滚动窗口面板-我们必须更新最小尺寸以显示视图
#最大大小是显示大小
显示宽度,显示高度=wx.DisplaySize()
w、 sizer\u height=self.main\u sizer.GetSize()
#行高
按钮高度=10
#项目数
items=self.m\u list\u view.GetNumberRows()+1
cols=self.m\u list\u view.GetNumberCols()
#列宽度加在一起
柱宽=100
对于范围内的列(列):
col\u width+=self.m\u list\u view.GetColSize(col)
打印“列宽度%s”%列宽度
#高度至少为最小值或行高*项目数
高度=按钮高度*项目
打印“尺寸单位高度%s,高度%s”%(尺寸单位高度,高度)
如果高度
你能展示暴露这种行为的最小代码吗?@Ripi2由于它的复制不一致,我一直在努力找到一个显示这种行为的小代码示例。我将继续尝试制作一个,并在明天发布。看起来对话框的大小可能为0,您可以尝试从键盘调整它的大小吗?如果您不能,请使用鼠标检查是否存在这种情况?@VZ。我已经更新了这个问题,添加了一个代码示例。我不认为大小是0,因为它是在我包含在代码示例中的方法中计算和设置的。谢谢你的建议。如何从键盘调整它的大小?在代码中?如果调整对话框大小,所有内容都会显示出来吗?