gpt4 book ai didi

wolfram-mathematica - 当 FieldSize 不够时,如何使 PopupMenu 中的项目更紧凑(更少的空白)

转载 作者:行者123 更新时间:2023-12-02 06:41:57 25 4
gpt4 key购买 nike

我正在尝试格式化 PopupMenu,并注意到当我制作 FieldSize->7 时,菜单中的一项将换行,即使在我看来有足够的空白本来可以用在右边的。

当我增加 FieldSize->8 时,fieldSize 现在就足够了,并且没有菜单项会环绕。

但在我看来,现在有很多空白空间被浪费了。我为 PopupMenu 尝试了很多选项,例如 ContentPadding 等,以使项目更紧凑,但当我将 fieldSize 设置回 7 时,它坚持包裹那个项目。

可能是字体样式问题?我想知道是否有人可以解决这个问题。

这是代码,并显示了问题

Manipulate[
opt,

Control[{ {opt,0,Style["display",11]},
{0->Text@Style["bob only",Small],
4->Text@Style["L + bob",Small],
1->Text@Style["L only",Small],
2->Text@Style["L resolved",Small],
3->Text@Style["L + resolved",Small],
5->Text@Style["L resolved + bob",Small],
6->Text@Style["show all above",Small]
},
ControlType->PopupMenu,FieldSize->7,
ImageMargins->0,
FrameMargins->0,ContentPadding->True,ImageSize->Small}]

]

这是我打开菜单时的截图

enter image description here

所以,现在我更改 FieldSize->8,现在它看起来像这样:

enter image description here

但是请注意上面,我认为右侧的空白区域太多,而 FieldSize->7 应该足够宽以便该项目不会环绕?。

我尝试了 FontFamily->"Times"和 "Courier",效果相同:

Manipulate[opt,
Control[{ {opt,0,Style["display",11]},
{0->Text@Style["bob only",Small,FontFamily->"Courier"],
4->Text@Style["L + bob",Small,FontFamily->"Courier"],
1->Text@Style["L only",Small,FontFamily->"Courier"],
2->Text@Style["L resolved",Small,FontFamily->"Courier"],
3->Text@Style["L + resolved",Small,FontFamily->"Courier"],
5->Text@Style["L resolved + bob",Small,FontFamily->"Courier"],
6->Text@Style["show all above",Small,FontFamily->"Courier"]
},ControlType->PopupMenu,FieldSize->7,
ImageMargins->0,FrameMargins->0,ContentPadding->True,ImageSize->Small}]
]

实际上,现在使用 Courier,我必须转到 FieldSize->9 才能让那个字段现在不回绕。所以 Courier 的情况变得更糟。

有没有可能让这个领域比现在更紧密?

编辑 1:回复 Sprite 先生: enter image description here enter image description here

编辑 2:

使用 FieldSize->Automatic,使整个菜单大小根据所选项目改变大小。

Manipulate[opt,Control[{{opt,0,Style["display",11]},
{0->Style["bob only",Small],
1->Style["L + bob",Small],
2->Style["L only",Small],
3->Style["L resolved",Small],
4->Style["L + resolved",Small],
5->Style["L resolved + bob",Small],
6->Style["show allabove",Small]},
ControlType->PopupMenu,FieldSize->Automatic,
ImageMargins->0,FrameMargins->0,ImageSize->Small}]]

12 月 21 日凌晨 1 点更新

下图显示了如何使用 Leonid 宏方法使其更容易通过使用构建 UI 并减少 UI 对象自定义的代码重复的宏。我目前大量使用这种方法并且有一个复杂的用户界面4,000 行仅用于 UI 本身,我无法以旧方式完成此操作,因为我会失去对事物的控制。

宏使管理代码布局更容易,更重要的是,现在我可以通过编辑小代码而不是很容易地改变用户界面本身宏代表的较大代码。没有 GUI 生成器,宏是下一个最好的事情:)

enter image description here

这是上面的代码

Manipulate[

Row[{opt1, opt2}],

Evaluate@With[{
popUpMenu1Options = MenuStyle -> {Red},
popUpMenu2Options = MenuStyle -> {Black},
popUpMenuCommonOptions = {BaseStyle -> 20, ImageMargins -> 0,
FrameMargins -> 0, ImageSize -> All}
},

With[{

menu1 = PopupMenu[Dynamic[opt1],
{"A", "B"
}, Sequence[popUpMenu1Options, popUpMenuCommonOptions]
],
menu2 = PopupMenu[Dynamic[opt2],
{"C", "D"
}, Sequence[popUpMenu2Options, popUpMenuCommonOptions]
]
},

Row[{menu1, menu2}]

]
],

{{opt1, "A"}, None},
{{opt2, "D"}, None},
TrackedSymbols :> {opt1, opt2}
]

最佳答案

根据 Simon 的回答稍作修改效果更好:

Manipulate[opt, 
Control[{{opt, 0, Style["display", 11]},
{0 -> Style["bob only", Small],
1 -> Style["L only", Small],
4 -> Style["L + bob", Small],
2 -> Style["L resolved", Small],
3 -> Style["L + resolved", Small],
5 -> Style["L resolved + bob", Small],
6 -> Style["show all above", Small]},
ControlType -> PopupMenu,
ImageMargins -> 0,
FrameMargins -> 0,
ImageSize -> All}]]

enter image description here

关于wolfram-mathematica - 当 FieldSize 不够时,如何使 PopupMenu 中的项目更紧凑(更少的空白),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6339703/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com