Wxpython wx Python:不可见/透明对话框
我有一个wx.Dialog和一个包含在滚动窗口面板中的wx.Grid。对话框由主框架上的菜单项启动,该菜单项不是对话框的父菜单项 有时,当我的对话框启动时,此面板中的内容不可见!如图所示: 我在创建GUI组件期间使用的打印语句正在执行,因此我不确定为什么对话框中偶尔没有内容 当这种情况开始发生时,我关闭并重新启动对话框,但是它经常连续发生多次,然后似乎自行解决,在第五次尝试时正常显示 还有其他人遇到过这种情况吗?原因是什么 我正在使用Ubuntu16.04LTS和wx.python3.0 编辑:包括我认为可能存在问题的代码示例 我有一个“redraw”方法,由于ScrolledWindow,它被调用来计算对话框的大小。在wx.Grid的每一行旁边都有按钮,所以我不能允许wx.Grid处理它自己的滚动。在wx.Grid中添加新行后调用此方法 重画方法如下:Wxpython wx Python:不可见/透明对话框,wxpython,wxwidgets,Wxpython,Wxwidgets,我有一个wx.Dialog和一个包含在滚动窗口面板中的wx.Grid。对话框由主框架上的菜单项启动,该菜单项不是对话框的父菜单项 有时,当我的对话框启动时,此面板中的内容不可见!如图所示: 我在创建GUI组件期间使用的打印语句正在执行,因此我不确定为什么对话框中偶尔没有内容 当这种情况开始发生时,我关闭并重新启动对话框,但是它经常连续发生多次,然后似乎自行解决,在第五次尝试时正常显示 还有其他人遇到过这种情况吗?原因是什么 我正在使用Ubuntu16.04LTS和wx.python3.0 编辑
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,因为它是在我包含在代码示例中的方法中计算和设置的。谢谢你的建议。如何从键盘调整它的大小?在代码中?如果调整对话框大小,所有内容都会显示出来吗?