如何解决切换面板时窗口左上角的小方块 wxpython
我遇到了 wx.panels 的问题。 在我的项目中,创建了一个文件中的类中继承的 wx.frame 文件,其他两个文件继承了 wx.panels。 我试图隐藏/销毁 panel1 并调用 panel2 但不知何故它不起作用。一个带有面板背景颜色的小方形图标出现在开关上。 我在 stackoverflow 上提到了 [this topic][1],但我发现如果我不使用 sizers,代码就不起作用(当拆分到不同的文件中时。) [1]:https://stackoverflow.com/questions/58794753/wxpython-panel-is-cropped-with-only-a-small-Box-shown-at-the-top-left-hand-corne
main.py
import sys
import wx
from test1 import panel1
from test2 import panel2
class main(wx.Frame):
def __init__(self,*args,**kwargs):
super().__init__(*args,**kwargs)
self.panel = panel1(parent=self)
self.Show()
# display=wx.display()
# size = display.GetGeometry().GetSize()
# print(size)
def update_window(self):
self.panel2=panel2(self,wx.ID_ANY)
self.panel2.Show()
self.panel.Hide()
self.Refresh()
if __name__ == "__main__":
print(__file__)
app = wx.App() # Create a new app,don't redirect stdout/stderr to a window.
frame = main(None,wx.ID_ANY,"Hello World",size=(1024,700)) # A Frame is a top-level window.
frame.Show(True) # Show the frame.
app.MainLoop()
test1.py
import wx
from view.panel import custom_panel
from test2 import panel2
class panel1(custom_panel):
def __init__(self,parent=None):
super().__init__(parent)
self.parent=parent
self.btn1 = wx.Button(self,"button1",pos=(100,50),size=(300,50))
self.Bind(wx.EVT_BUTTON,self.On_btn1_clicked,self.btn1)
def On_btn1_clicked(self,event):
self.parent.update_window()
test2.py
import wx
from view.panel import custom_panel
class panel2(custom_panel):
def __init__(self,parent=None,id=None,700)):
super().__init__(parent)
self.parent=parent
self.btn2 = wx.Button(self,"button2",pos=(300,self.On_btn2_clicked,self.btn2)
def On_btn2_clicked(self,event):
self.parent.update_window()
custom_panel.py
import wx
class custom_panel(wx.Panel):
def __init__(self,**kwargs)
self.SetBackgroundColour("#000000")
if __name__ == "__main__":
pass
解决方法
@PavanHebli,
我强烈建议您学习 sizer 以及如何使用它们。
虽然您的解决方案确实有效,但这是非常糟糕的解决方案。
,嗯,我也同意使用 sizer。
但是:我也遇到了很长时间的问题并且不知道解决方案。 sizer 不工作(正如我所料)
对我来说,问题是面板没有(或尺寸不正确)。 解决方案是:
panel.Fit()
要么
panel.SetSize(x,y)
解决了! 在创建第二个面板时,我只传递了父面板,我猜 wx.DefaultSize 与第一个面板不同,不适用于第二个面板。 我所要做的就是在 test2.py 文件的 init 方法 中传递 size=(1024,700) 像这样:
super().__init__(parent,id=id,size=(1024,700))
就是这样。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。