- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在 WX 表单生成器中为 Python 设计一个仪表板。我在尝试弄清楚如何使两个作为垂直 sizer 子级的水平 sizer 彼此远离扩展时遇到问题。以下是描述我所指内容的屏幕截图:
蓝色箭头表示我希望文本框控件和标签向上移动,靠近第一个标签。
我的第一直觉是这与 wx.EXPAND 等标志有关,但是,我无法以一种使 sizer 彼此更接近的方式更改它们。这几乎就像每次我放置一个 sizer 它会自动尝试将所有内容都放入整个窗口中......这使得很难将项目放置在表单上的精确位置。 关于如何阻止 sizer 扩展到整个框架窗口大小的任何建议?
我的下一步行动是尝试使用 gridsizer 或 flex grid sizer 但是,我只通过直接代码使用它们,您可以在其中选择要添加小部件的网格中的确切位置或目的。使用表单生成器,我发现它们更难使用,主要是因为我无法在网格大小调整器的某些索引处插入对象。它按顺序插入它们:
1,1 -> 1,2 -> 1,3 -> 1,i -> 2,1 -> 2,2 -> 2,3 -> 2,i -> j,i
这意味着如果我需要更改网格中的某些内容...这非常困难。 除了按顺序插入对象之外,我是否遗漏了一些更容易将对象插入网格的东西?
下面是 5x5 grid sizer(未完全填充)的示例之一,其中我指定了水平和垂直间隙 = 0:
除了能够用 1,4 处的文本框替换按钮外,我注意到水平间隙显然不为零,即使我将垂直和水平间隙指定为 0。这也使得设计表单变得非常困难。 为什么按钮之间有水平间隙?
最佳答案
正如您所注意到的,“东西”在使用 sizer 时会扩展以适合,如果使用不当,比例标志可能会对您的布局造成严重破坏。
使用这段简单的代码:
import wx
class Summary(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, wx.ID_ANY, "Playing with Simple Sizers", size=(430,260))
self.panel = wx.Panel(self, wx.ID_ANY)
self.log = wx.TextCtrl(self.panel, wx.ID_ANY, value="input1:",size=(428,25))
self.log2 = wx.TextCtrl(self.panel, wx.ID_ANY, value="input2:", size=(428,25))
self.quit_button = wx.Button(self.panel, label="Quit",size=(60,25))
self.button1= wx.Button(self.panel, label="1",)
self.button2 = wx.Button(self.panel, label="2",size=(60,25))
self.button3 = wx.Button(self.panel, label="3",size=(60,25))
self.button4 = wx.Button(self.panel, label="4",size=(60,25))
self.quit_button.Bind(wx.EVT_BUTTON, self.OnQuit)
vbox = wx.BoxSizer(wx.VERTICAL)
hbox1 = wx.BoxSizer(wx.HORIZONTAL)
hbox2 = wx.BoxSizer(wx.HORIZONTAL)
hbox3 = wx.BoxSizer(wx.HORIZONTAL)
hbox4 = wx.BoxSizer(wx.HORIZONTAL)
vbox.Add(self.quit_button, 0, wx.ALL|wx.EXPAND, 1)
hbox1.Add(self.log, 0, wx.ALL|wx.EXPAND, 1)
hbox2.Add(self.log2, 0, wx.ALL|wx.EXPAND, 1)
hbox3.Add(self.button1, 1, wx.ALL|wx.EXPAND, 1)
hbox3.Add(self.button2, 2, wx.ALL|wx.EXPAND, 1)
hbox4.Add(self.button3, 0, wx.ALL|wx.EXPAND, 1)
hbox4.Add(self.button4, 1, wx.ALL|wx.EXPAND, 1)
vbox.Add(hbox1, 0, wx.ALIGN_RIGHT|wx.EXPAND, 1)
vbox.Add(hbox3, 0, wx.ALIGN_RIGHT|wx.EXPAND, 1)
vbox.Add(hbox4, 0, wx.ALIGN_RIGHT|wx.EXPAND, 1)
vbox.Add(hbox2, 0, wx.ALIGN_RIGHT|wx.EXPAND, 1)
self.panel.SetSizer(vbox)
self.Show()
def OnQuit(self, event):
self.Close()
# Run the program
if __name__ == "__main__":
app = wx.App()
frame = Summary()
app.MainLoop()
比例标志是添加到sizer时的第二个参数。
您会注意到按钮的大小已设置为 0、1 和 2,更改它们并查看按钮之间的相互关系并使用按钮的大小参数。
将 self.log 或 self.log2 上的比例标志更改为 1 并观察其扩展。
最后将框架尺寸加宽,看看 react 。
Sizer 起初可能会非常令人沮丧,但一旦您“掌握”它,它们就是强大的工具。
关于python - 如何防止垂直尺寸调整器在 wxformbuilder 中一直向下扩展他们的 child ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32808410/
我正在使用 wxFormBuilder 创建布局。我有一个框架,wxBoxSizer(其中包含 wxToolBar 和 wxListBook)和一个带有 wxMenu 的 wxMenuBar,如下所示
我一直在尝试使用wxFrameBuilder来创建框架的子类,这样我就可以调用一个子类,该子类继承了许多主框架,但通过替换面板来覆盖部分框架。这是wxFormBuilder生成的测试代码。 c
我玩的是Eclipse + wxWidgets + wxFormBuilder 我使用 wxFormBuilder 进行 GUI 设计。它生成 2 个类:第一个是基类; second 继承 first
不确定背景是否相关,但我会将其包含在可能性中 我要从 wxglade 搬过来,所以我从 wxglade 生成了一个 XRC 并导入到 wxformbuilder 我有一个网格,我对其进行子类化以添加一
我正在尝试在 WX 表单生成器中为 Python 设计一个仪表板。我在尝试弄清楚如何使两个作为垂直 sizer 子级的水平 sizer 彼此远离扩展时遇到问题。以下是描述我所指内容的屏幕截图: 蓝色箭
如何生成 python 代码?我知道我需要将 code_generation 属性从 C++ 更改为 Python,但是没有 Python 选项...我该如何解决这个问题?我已经尝试在互联网上寻找这个
我在 wxBuilderForm 中创建了一个带有按钮的简单表单(框架)。 当我生成代码时(在 wxFormBuilder 中按 F8 时),它会生成以下三个文件: noname.cpp noname
每次我使用 wxFormBuilder 时,我都会面临很多与项目相关的配置。例如,名称、路径、嵌入式文件路径、文件等。当我生成代码时,框架的名称将是基类的名称,派生类的名称格式如下 ${PROJECT
我下载了wxFormBuilder 3.4 beta mac到适当的目录。 然后打开一个终端,我运行 sh create_build_files4.sh 但控制台显示以下错误。 MinSeok-ui-
我正在尝试关注 this tutorial使用 wxPython 和 wxFormBuilder 快速制作简单的 GUI。 使用wxFormBuilder,我创建了一个 super 简单的框架,它有一
我是一名优秀的程序员,十分优秀!