- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在动态更改 GUI 中 wx 对象的数量。代码可以工作,但对象的对齐并不完美。静态文本对象未与文本对象居中对齐。
请注意,“if”一词与“字段名称”并不完全对齐。
代码:
import wx
########################################################################
class MyPanel(wx.Panel):
""""""
#----------------------------------------------------------------------
def __init__(self, parent):
"""Constructor"""
wx.Panel.__init__(self, parent)
self.numRows = 0
self.frame = parent
#create sizers
self.mainSizer = wx.BoxSizer(wx.VERTICAL)
controlSizer = wx.BoxSizer(wx.HORIZONTAL)
self.colSizer = wx.BoxSizer(wx.VERTICAL)
self.addButton = wx.Button(self, label="Add")
self.addButton.Bind(wx.EVT_BUTTON, self.onAddWidget)
controlSizer.Add(self.addButton, 0, wx.CENTER|wx.ALL, 5)
self.removeButton = wx.Button(self, label="Remove")
self.removeButton.Bind(wx.EVT_BUTTON, self.onRemoveWidget)
controlSizer.Add(self.removeButton, 0, wx.CENTER|wx.ALL, 5)
self.mainSizer.Add(controlSizer, 0, wx.CENTER)
self.mainSizer.Add(self.colSizer, 0, wx.CENTER|wx.ALL, 10)
self.SetSizer(self.mainSizer)
#----------------------------------------------------------------------
def onAddWidget(self, event):
""""""
self.numRows += 1
#create the objects
rowSizer =wx.BoxSizer(wx.HORIZONTAL)
ifText = wx.StaticText(self, -1, 'If')
fieldBox1 = wx.TextCtrl(self, -1, 'Field Name')
dropDown1 = wx.Choice(self, -1, choices=['<', '<=', '=', '>=', '>'])
fieldBox2 = wx.TextCtrl(self, -1, 'Field Name')
thenText = wx.StaticText(self, -1, 'Then')
fieldBox3 = wx.TextCtrl(self, -1, 'Field Name')
#create a list of all the objects
objects = [ifText, fieldBox1, dropDown1, fieldBox2, thenText, fieldBox3]
#add object to row sizer
for myObject in objects:
rowSizer.Add(myObject, 0, wx.ALL, 5)
#add the objects to the sizer
self.colSizer.Add(rowSizer, 0, wx.ALL, 5)
self.frame.fSizer.Layout()
self.frame.Fit()
#----------------------------------------------------------------------
def onRemoveWidget(self, event):
""""""
if self.colSizer.GetChildren():
self.colSizer.Hide(self.numRows-1)
self.colSizer.Remove(self.numRows-1)
self.numRows -= 1
self.frame.fSizer.Layout()
self.frame.Fit()
########################################################################
class MyFrame(wx.Frame):
""""""
#----------------------------------------------------------------------
def __init__(self):
"""Constructor"""
wx.Frame.__init__(self, parent=None, title="Add / Remove Buttons")
self.fSizer = wx.BoxSizer(wx.VERTICAL)
panel = MyPanel(self)
self.fSizer.Add(panel, 1, wx.EXPAND)
self.SetSizer(self.fSizer)
self.Fit()
self.Show()
#----------------------------------------------------------------------
if __name__ == "__main__":
app = wx.App(False)
frame = MyFrame()
app.MainLoop()
del app
请有人建议我如何解决此对齐问题。
提前非常感谢!
最佳答案
呃!事实证明,我只需要在将项目添加到行大小调整器时更改对齐方式。
rowSizer.Add(myObject, 0, wx.ALIGN_CENTER, 5)
关于python - wxPython 在 sizer 中居中对齐项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52983145/
这是一个关于 wxBoxSizer 的问题。我正在实现一个自定义 wxWidget,如可折叠 Pane 。 问题是:我有一个 wxBoxSizer (Sizer1),我添加了另一个 wxBoxSize
我正在使用 wxPython 2.8 并且我正在尝试在 wx.Frame 的右侧添加滚动条功能。这个“右侧”是一个sizer;我曾尝试使用 wx.ScrolledWindow 但它似乎只适用于 wx.
我正在将我的一个应用程序从旧的 GUI(我使用固定大小)转移到 wxWidgets(我试图学习 sizer 的基础)。 在应用程序中,我有几个结构非常复杂的表单。数据和工作流程的性质建议我将所有这些数
我在弄清楚如何让 wxPython 中的 sizer 以我希望的方式工作时遇到了麻烦(除了:我是唯一认为 wxPython 没有很好记录的人吗?)。我有 4 个按钮和一个 textctrl,我想这样安
wxWidgets 很新,遇到了 sizer 的问题,在我的程序中,我在自定义面板中有很多按钮,我也想添加一个水平滚动条。然而,我尝试过的不同大小调整器都有自动布局,它会在开始时重新排列我的按钮并在调
我正在学习 wxPython,我正在尝试编写一个学生信息管理器。我已经编写 CLI 程序多年,所以我没有太多制作 GUI 的经验。 首先,我为我的 UI 绘制了蓝图。 然后,我尝试在 wxPython
我还在习惯 wxWidgets 中的 sizer,因此似乎无法让它们做我想做的事。 我想要一个包含其他面板/框列表的大面板,然后每个面板/框包含一组文本字段 ---------------------
我的项目在主框架上有一个 BoxSizer,然后 BoxSizer 包含一个作为 Gride Sizer 的面板。大小调整器按预期工作,直到窗口水平大小超过某个点,然后什么都不会水平拉伸(stretc
开始学习 wxPython,以便我可以制作应用程序。我特别遇到嵌套 sizer 的问题。 class browser_mainPanel(wx.Panel): def __init__(self
我有一个 wxWindow。在里面我有一个 wxBoxSize(垂直)。 sizer 有 3 个子控件。 我希望能够隐藏三个子控件之一,并让 sizer 及其父控件自动调整大小。例如,当我隐藏 siz
可以使用 wxpython 获取鼠标位置 事件.GetPosition() 但是,是否可以在 sizer 中获取鼠标的位置?即使在扩展尺寸测定器中,这也能起作用吗? 谢谢。 最佳答案 假设 sizer
这个问题在这里已经有了答案: How do I disable the resizable property of a textarea? (21 个回答) 关闭 7 年前。
我不得不说我的英语不好。 好吧,我的问题是我需要在程序的特定时刻将 wxButton 插入 wxBoxSizer。此 sizer 是其他 sizer 的子级,并且不是全局变量。我在不同的范围内,所以我
我想将面板类添加到我将在代码主行中调用的框架类中的 sizer。 我得到的错误是 TypeError: wx.Window, wx.Sizer, wx.Size, or (w,h) expected
我正在动态更改 GUI 中 wx 对象的数量。代码可以工作,但对象的对齐并不完美。静态文本对象未与文本对象居中对齐。 请注意,“if”一词与“字段名称”并不完全对齐。 代码: import wx ##
在我看来,下面的代码应该在窗口的正中央显示文本;也就是说,在内面板的中央。然而,它没有,我想知道为什么不。如果运行代码,您会在框架中间看到一个白色面板,大小为 150 像素 x 150 像素。我根本不
基本上,我试图完成一个简单的隐藏面板,并在单击按钮时显示另一个面板,如果框架中有一个尺寸调整器,我通常可以做到这些,但在这种情况下,我有一个功能区,所以我有 2 个尺寸调整器每当我在 sizer 2
我目前正在尝试使用 wxPython 制作 GUI。布局是 GUI 右侧的一个面板,带有 3 个 StaticBoxSizer。其中一个比其他的复杂得多,能够通过单击按钮向其中添加更多元素,因此我决定
我正在学习一些关于 wxWidgets 的教程,发现我必须将 wxPanel 添加到我的主 frame 以获得类似 Windows 的背景,而不是它默认为丑陋的深灰色。 现在,WxSmith tuto
我有一个使用 wxWidgets(C++、MSVC)设置的 GUI,部分功能是通过 DLL 向 GUI 添加元素。本质上,我会将一个 sizer 传递给 DLL,后者将根据 DLL 中的内容依次添加元
我是一名优秀的程序员,十分优秀!