在wxpython中将按钮放在列表框下面?
我试图将按钮放在列表框下方,但是我尝试的所有内容似乎都会扭曲或导致问题。我希望任何人都可以帮助我。
我想在列表框下方放置 2 个按钮,它们应该始终根据窗口的大小更改位置(这样它就不会消失),基本上当您调整应用程序窗口的大小时,它应该更改按钮的位置。
这是我到目前为止所拥有的,
things_inlistbox=[]
things2_listbox=[]
things3listbox=[]
things4listbox=[]
import wx
def areachange(self,pg):
print pg
if pg=="Things":
self.Things_area.Show()
else:
self.Things_area.Hide()
class things1tab(wx.Panel):
def newAddImage(self,parent):
things2_listbox.append('hi');
self.listBox.Set(things2_listbox)
self.listBox.SetSelection(len(things2_listbox)-1)
def reName(self,parent):
sel = self.listBox.GetSelection()
text = self.listBox.GetString(sel)
renamed = wx.GetTextFromUser('Rename item', 'Rename dialog', text)
if renamed != '':
things2_listbox.pop(sel)
things2_listbox.insert(sel,renamed)
self.listBox.Set(things2_listbox)
self.listBox.SetSelection(sel)
def __init__(self, parent):
wx.Panel.__init__(self, parent)
self.listBox = wx.ListBox(self, size=(200, -1), choices=things2_listbox, style=wx.LB_SINGLE)
self.sizer = wx.BoxSizer()
self.sizerMain = wx.BoxSizer()
self.listBox.Bind(wx.EVT_LISTBOX_DCLICK, self.reName)
self.sizer.Add(self.listBox, proportion=0, flag=wx.TOP | wx.EXPAND | wx.LEFT, border=5)
self.sizerMain.Add(self.sizer, proportion=0, flag=wx.BOTTOM | wx.EXPAND, border=70)
self.SetSizer(self.sizerMain)
class imageArea(wx.Frame):
def __init__(self, parent):
wx.Frame.__init__(self, parent)
wx.StaticBox(self, -1, 'Personal Info', (400, 5), size=(240, 170))
self.quote = wx.StaticText(self, label="Your quote :", pos=(20, 30), size=(200, -1))
self.Show()
self.SetSizer(self.sizerMain)
class things2tab(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
t = wx.StaticText(self, -1, "This is a PageTwo object", (40,40))
class things3tab(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
t = wx.StaticText(self, -1, "This is a PageThree object", (60,60))
class things4tab(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
t = wx.StaticText(self, -1, "This is a PageThree object", (400,60))
class MyNotebook(wx.Notebook):
def __init__(self, *args, **kwargs):
wx.Notebook.__init__(self, *args, **kwargs)
class MyPanel(wx.Panel):
def OnPageChanged(self, event):
new = event.GetSelection()
areachange(self,self.notebook.GetPageText(new))
event.Skip()
def OnPageChanging(self, event):
event.Skip()
def __init__(self, *args, **kwargs):
wx.Panel.__init__(self, *args, **kwargs)
self.notebook = MyNotebook(self, size=(225, -1))
# self.button = wx.Button(self, label="Something else here? Maybe!")
tab_Things = things1tab(self.notebook)
tab_Things2 = things2tab(self.notebook)
tab_Things3 = things3tab(self.notebook)
tab_Things4 = things4tab(self.notebook)
# add the pages to the notebook with the label to show on the tab
self.notebook.AddPage(tab_Things, "Things",select=True)
self.notebook.AddPage(tab_Things2, "Things2")
self.notebook.AddPage(tab_Things3, "Things3")
self.notebook.AddPage(tab_Things4, "Things4")
self.Things_area=wx.StaticText(self, -1, "This is a PageOne object", (300,240))
self.sizer = wx.BoxSizer()
self.sizer.Add(self.notebook, proportion=0, flag=wx.EXPAND)
# self.sizer.Add(self.button, proportion=0)
self.SetSizer(self.sizer)
self.notebook.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED, self.OnPageChanged)
self.notebook.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGING, self.OnPageChanging)
areachange(self,self.notebook.GetPageText(0))
class MainWindow(wx.Frame):
def __init__(self, *args, **kwargs):
wx.Frame.__init__(self, *args, **kwargs)
self.panel = MyPanel(self)
self.Show()
app = wx.App(False)
win = MainWindow(None, size=(600, 400))
app.MainLoop()
我不知道如何做到这一点,如果有人可以帮助我,我将非常感激。如果这是简单的事情,请原谅我,但是我已经坚持了好几天了。
i am trying to put buttons underneath the listbox however everything i try seems to distort or cause problems. I am hoping anyone can help me.
I want to put 2 buttons underneath the listbox and they should always change position depending on the size of the window (so it doesn't dissapear), basicilly when you resize the window of the app it should change the position of the buttons.
Here is what i have so far
things_inlistbox=[]
things2_listbox=[]
things3listbox=[]
things4listbox=[]
import wx
def areachange(self,pg):
print pg
if pg=="Things":
self.Things_area.Show()
else:
self.Things_area.Hide()
class things1tab(wx.Panel):
def newAddImage(self,parent):
things2_listbox.append('hi');
self.listBox.Set(things2_listbox)
self.listBox.SetSelection(len(things2_listbox)-1)
def reName(self,parent):
sel = self.listBox.GetSelection()
text = self.listBox.GetString(sel)
renamed = wx.GetTextFromUser('Rename item', 'Rename dialog', text)
if renamed != '':
things2_listbox.pop(sel)
things2_listbox.insert(sel,renamed)
self.listBox.Set(things2_listbox)
self.listBox.SetSelection(sel)
def __init__(self, parent):
wx.Panel.__init__(self, parent)
self.listBox = wx.ListBox(self, size=(200, -1), choices=things2_listbox, style=wx.LB_SINGLE)
self.sizer = wx.BoxSizer()
self.sizerMain = wx.BoxSizer()
self.listBox.Bind(wx.EVT_LISTBOX_DCLICK, self.reName)
self.sizer.Add(self.listBox, proportion=0, flag=wx.TOP | wx.EXPAND | wx.LEFT, border=5)
self.sizerMain.Add(self.sizer, proportion=0, flag=wx.BOTTOM | wx.EXPAND, border=70)
self.SetSizer(self.sizerMain)
class imageArea(wx.Frame):
def __init__(self, parent):
wx.Frame.__init__(self, parent)
wx.StaticBox(self, -1, 'Personal Info', (400, 5), size=(240, 170))
self.quote = wx.StaticText(self, label="Your quote :", pos=(20, 30), size=(200, -1))
self.Show()
self.SetSizer(self.sizerMain)
class things2tab(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
t = wx.StaticText(self, -1, "This is a PageTwo object", (40,40))
class things3tab(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
t = wx.StaticText(self, -1, "This is a PageThree object", (60,60))
class things4tab(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
t = wx.StaticText(self, -1, "This is a PageThree object", (400,60))
class MyNotebook(wx.Notebook):
def __init__(self, *args, **kwargs):
wx.Notebook.__init__(self, *args, **kwargs)
class MyPanel(wx.Panel):
def OnPageChanged(self, event):
new = event.GetSelection()
areachange(self,self.notebook.GetPageText(new))
event.Skip()
def OnPageChanging(self, event):
event.Skip()
def __init__(self, *args, **kwargs):
wx.Panel.__init__(self, *args, **kwargs)
self.notebook = MyNotebook(self, size=(225, -1))
# self.button = wx.Button(self, label="Something else here? Maybe!")
tab_Things = things1tab(self.notebook)
tab_Things2 = things2tab(self.notebook)
tab_Things3 = things3tab(self.notebook)
tab_Things4 = things4tab(self.notebook)
# add the pages to the notebook with the label to show on the tab
self.notebook.AddPage(tab_Things, "Things",select=True)
self.notebook.AddPage(tab_Things2, "Things2")
self.notebook.AddPage(tab_Things3, "Things3")
self.notebook.AddPage(tab_Things4, "Things4")
self.Things_area=wx.StaticText(self, -1, "This is a PageOne object", (300,240))
self.sizer = wx.BoxSizer()
self.sizer.Add(self.notebook, proportion=0, flag=wx.EXPAND)
# self.sizer.Add(self.button, proportion=0)
self.SetSizer(self.sizer)
self.notebook.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED, self.OnPageChanged)
self.notebook.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGING, self.OnPageChanging)
areachange(self,self.notebook.GetPageText(0))
class MainWindow(wx.Frame):
def __init__(self, *args, **kwargs):
wx.Frame.__init__(self, *args, **kwargs)
self.panel = MyPanel(self)
self.Show()
app = wx.App(False)
win = MainWindow(None, size=(600, 400))
app.MainLoop()
I am not sure how to do this, if anyone could help me it would be greatly appiecated. If this is something simple please forgive me, however I have been stuck on this for days.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我不确定这是否是您的意思,但尝试用此替换您的“things1tab”代码,看看它是否有效:
我所做的就是创建一个按钮大小调整器,向其添加两个按钮并将其嵌套在您的“自定尺寸器”。我还将以下比例从零更改为一:
希望这会帮助您走得更远。
I'm not sure if this is what you mean or not, but try replacing your "things1tab" code with this and see if it works:
All I did was create a button sizer, add two buttons to it and nest it inside your "self.sizer". I also changed the following proportion from zero to one:
Hopefully that will help you get farther along.