- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试将具有水平布局的大小调整器嵌套在笔记本页面面板的垂直布局大小调整器内。
我从 wxPython: Resizing a notebook within a notebook 中得到了一些灵感但无法使其正常工作。
而不是获取此布局
Tonnage limit (in tons): [3000]
[x] Enable filter on matchings categories
面板中的所有内容都被破坏在一行上
我在 Win7、python 2.6.6、wx 2.8.12.1 上运行它
相关代码如下:
import sys
import os
import wx
class MainWindow(wx.Frame):
def __init__(self,parent,title):
self.ID_LOAD=101
self.ID_SAVE=102
# based on a frame, so set up the frame
wx.Frame.__init__(self,parent,wx.ID_ANY, title, size=(640,480))
self.CreateStatusBar()
self.tab = wx.Notebook(self, -1, style=(wx.NB_TOP))
self.globPanel = wx.NotebookPage(self.tab, -1)
self.orderPanel = wx.NotebookPage(self.tab, -1)
self.slabsPanel = wx.NotebookPage(self.tab, -1)
self.tab.AddPage(self.globPanel, "Global filter")
self.tab.AddPage(self.orderPanel, "Orders filter")
self.tab.AddPage(self.slabsPanel, "Slabs filter")
self.toolbar = wx.ToolBar(self, wx.ID_ANY, style=wx.TB_HORIZONTAL)
self.toolbar.SetToolBitmapSize((20,20))
load_ico = wx.ArtProvider.GetBitmap(wx.ART_FILE_OPEN, wx.ART_TOOLBAR, (20,20))
self.toolbar.AddLabelTool(self.ID_LOAD, "Load", load_ico, bmpDisabled=wx.NullBitmap, shortHelp='Load', longHelp="Loads a text file to the filter editor")
save_ico = wx.ArtProvider.GetBitmap(wx.ART_FILE_SAVE, wx.ART_TOOLBAR, (20,20))
self.toolbar.AddLabelTool(self.ID_SAVE, "Save", save_ico, bmpDisabled=wx.NullBitmap, shortHelp='Save', longHelp="Saves the contents of the filter editor")
self.toolbar.AddSeparator()
self.tonnageStatic = wx.StaticText(self.globPanel, wx.ID_ANY, "Tonnage limit (in tons): ")
self.tonnageEdit = wx.TextCtrl(self.globPanel, wx.ID_ANY, '30000')
self.tonnageSizer = wx.BoxSizer(wx.HORIZONTAL)
self.tonnageSizer.Add(self.tonnageStatic, flag=wx.EXPAND | wx.RIGHT | wx.LEFT | wx.TOP | wx.BOTTOM, border=10)
self.tonnageSizer.Add(self.tonnageEdit, flag=wx.EXPAND | wx.RIGHT | wx.LEFT | wx.TOP | wx.BOTTOM, border=10)
self.filterCheck = wx.CheckBox(self.globPanel, wx.ID_ANY, "Enable filter on matchings categories")
self.globSizer = wx.BoxSizer(wx.VERTICAL)
self.globSizer.Add(self.tonnageSizer)
self.globSizer.Add(wx.StaticLine(self), 0, wx.EXPAND)
self.globSizer.Add(self.filterCheck, 0, wx.EXPAND)
self.globPanel.SetSizer(self.globSizer)
self.sizer = wx.BoxSizer(wx.VERTICAL)
self.sizer.Add(self.toolbar,0,wx.EXPAND)
self.sizer.Add(wx.StaticLine(self), 0, wx.EXPAND)
self.sizer.Add(self.tab, 1, wx.EXPAND)
self.SetSizer(self.sizer)
self.Layout()
self.toolbar.Realize()
# Show it !!!
self.Show(1)
def main():
app = wx.PySimpleApp()
view = MainWindow(None, "Input filter")
app.MainLoop()
if __name__ == "__main__":
main()
这样稍微好一点,但是我没有得到静态行,并且只显示 checkox 标签的第一个字符
self.tonnageStatic = wx.StaticText(self.globPanel, wx.ID_ANY, "Tonnage limit (in tons): ")
self.tonnageEdit = wx.TextCtrl(self.globPanel, wx.ID_ANY, '30000')
self.tonnageSizer = wx.BoxSizer(wx.HORIZONTAL)
self.tonnageSizer.Add(self.tonnageStatic, 0, flag=wx.EXPAND|wx.ALL)
self.tonnageSizer.Add(self.tonnageEdit, 0, flag=wx.EXPAND|wx.ALL)
self.filterCheck = wx.CheckBox(self.globPanel, wx.ID_ANY, "Enable filter on matchings categories")
self.globSizer = wx.BoxSizer(wx.VERTICAL)
self.globSizer.Add(self.tonnageSizer)
self.globSizer.Add(wx.StaticLine(self.globPanel), 0, wx.EXPAND)
self.globSizer.Add(self.filterCheck, 0, wx.EXPAND)
self.globPanel.SetSizer(self.globSizer)
self.sizer = wx.BoxSizer(wx.VERTICAL)
self.sizer.Add(self.toolbar,0,wx.EXPAND)
self.sizer.Add(wx.StaticLine(self), 0, wx.EXPAND)
self.sizer.Add(self.tab, 1, wx.EXPAND)
self.SetSizer(self.sizer)
self.globPanel.Layout()
self.Layout()
self.toolbar.Realize()
# Show it !!!
self.Show(1)
最佳答案
我刚刚在 Windows 上运行了它,如果您在 self.Layout()
行之后在 globPanel 上调用 .Layout()
,它应该将 sizer 调整为形状: )
您还可以使用wx.ALL
,它与右、左、上、下相同
编辑:我很好奇为什么会有这种奇怪的行为,并进行了更多研究。我查看了我使用笔记本的地方,并且我总是使用面板作为页面。如果将 NotebookPages 更改为面板,则可以取消 Layout
调用,并且它会按预期工作。
关于python - 使用 wxnotebook 的 wxpython boxsizer 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10947792/
控制台记录两次,但只需要显示第一个console.log(boxSize) var size = 100; if (size > 50) { var boxSize = size * 5;
我有一个函数可以计算屏幕上可以显示的图像数量,如果图像多于可以在屏幕上显示的图像数量,我会调整图像的大小,直到它们全部出现。 然后,我想用一个垂直盒子大小调整器和几个水平盒子大小调整器来显示它们! 盒
全面披露:我是 wxpython 的新手(大约 3 天),我不太了解 boxsizers 的细节。 我正在编写一个 GUI 来显示照片和一些相关的细节。我正在使用 box sizers 在主选项卡上水
我想使用 wx.BoxSizer 将元素垂直和水平居中。我尝试了这个不成功(结果:元素垂直居中但不是水平居中...): vsizer = wx.BoxSizer(wx.VERTICAL) hsizer
好吧,我有一个关于一些 wxWidgets sizer 的问题,以及我如何认为它们应该行动但没有行动...... 我对这些图像的设置是这样的: verticalBox = new wxBoxSizer
好的,我有一个正在编码的应用程序,我正在尝试使布局更简单: 注意文本是如何左对齐的,输入框是如何对齐的,我在 wxPython 演示代码中看到了这一点,但它们都使用了 flexgrid sizer,而
我使用 Panel 从 OpenCV 中绘制图像,但似乎这个 panel 不能放入 BoxSizer .我试着做 vbox = wx.BoxSizer(wx.VERTICAL) panel.SetSi
我正在向水平 wx.BoxSizer 添加元素,但它们不是彼此相邻放置,而是显示在彼此之上(所有元素都放置在父级的像素位置 (0,0) 中)面板)。 以下是文件的缩短版本(相关部分): main.
这段代码有什么问题?我试图将笔记本放在由 boxsizer 控制的面板上。我是 wxpython 的新手,不知道我做错了什么。当我运行它时,它只会把角落弄得一团糟:( import wx class
我正在尝试在水平 BoxSizer 中堆叠多个小部件。但是,我遇到了一些意想不到的行为。与 Sizer 中的项目均匀调整大小不同,一旦达到特定大小,项目将停止随窗口调整大小。 我认为从视觉上最好理解这
我正在使用 BoxSizer 作为水平和垂直布局。但是,当我在水平 BoxSizer 中使用垂直 BoxSizer 来包含我的按钮时,它会垂直显示在另一个元素旁边,当您调整它的大小时,它会折叠并隐藏按
如何在 Vertical BoxSizer 中设置间距? Vertival BoxSizer 中有什么与 GridSizer 中的 SetVGap(设置 sizer 中的单元格之间的垂直间隙(以像素为
我有几个不同大小的按钮,它们以我希望的方式扩展。但是,当我将父级添加到用于在框架中的所有元素周围添加边框的新 wx.BoxSizer 时,已添加的 sizer 在垂直方向上正常运行,但在水平方向上不正
我正在尝试将登录/密码页面放入 wx.Notebook 的一个选项卡中。但是 wx.BoxSizer 不起作用 - 它堆积了标签和按钮。 这是我的代码。 # Define the tab co
我在调整盒子大小方面遇到了一些问题。代码如下: .wrapper { text-align: center; } #bubble
我正在尝试将具有水平布局的大小调整器嵌套在笔记本页面面板的垂直布局大小调整器内。 我从 wxPython: Resizing a notebook within a notebook 中得到了一些灵
我是一名优秀的程序员,十分优秀!