【问题标题】:wxPython - modify a framewxPython - 修改框架
【发布时间】:2016-04-06 09:32:08
【问题描述】:

我有一个简单的代码:

import wx

class Glowne(wx.Panel):
    def __init__(self, parent):
        wx.Panel.__init__(self, parent=parent)
        pos = 55
        tekst = 'HELLO - position'
        font = wx.Font(18, wx.DEFAULT, wx.NORMAL, wx.NORMAL)
        wx.StaticText(self, -1, tekst, (300, pos)).SetFont(font)

        btn = wx.Button(self, -1, "Change pos", (345, 100))
        #self.Bind(wx.EVT_BUTTON, Program.zmiana, btn)

class Program(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None, wx.ID_ANY,'Program')
        panel_one = Glowne(self)
        self.SetSize((800,600))
        self.Centre()

if __name__ == "__main__":
    app = wx.App(False)
    frame = Program()
    frame.Show()
    app.MainLoop()

点击“更改位置”按钮后如何修改 pos 变量? 在我的真实程序中,我有类似的东西: 姓名 名称1 名字2

"BUTTTON"

点击“按钮”后,我想在 name2 和按钮之间添加 wx.TextCtrl 方法。我需要修改一个框架(添加地点 beetwen name2 和按钮)。我不知道我怎样才能做到这一点。

编辑。有一段代码需要修改:

def __init__(self, parent):
    global odstep
    self.panel = wx.Panel.__init__(self, parent)
    odstep = 0
    odstep1 = 0
    font = wx.Font(13, wx.DEFAULT, wx.NORMAL, wx.NORMAL)
    for name in config['rewir1']:
        nazwa_zliczana = config['rewir1'][name]
        odstep += 22
        self.name1 = wx.StaticText(self, -1, name, (300, 10 + odstep))
        self.name1.SetFont(font)
        btn_usuwanie = wx.Button(self, -1, u"Usuń", (475, 10 + odstep))
        self.Bind(wx.EVT_BUTTON, lambda evt, i: Program.Usuwanie(evt, i), btn_usuwanie)
    wx.StaticText(self, -1, 'PART I', (365, 0), style=wx.ALIGN_CENTER).SetFont(font)
    odstep1 = odstep + 50
    print odstep
    for name in config['rewir2']:
        nazwa_zliczana = config['rewir2'][name]
        odstep1 += 22
        self.name2 = wx.StaticText(self, -1, name, (300, 50 + odstep1))
        self.name2.SetFont(font)
        btn_usuwanie_2 = wx.Button(self, -1, u"Usuń", (475, 50 + odstep1))
        self.Bind(wx.EVT_BUTTON, lambda evt, i: Program.Usuwanie(evt, i), btn_usuwanie_2)
    print odstep1
    wx.StaticText(self, -1, 'PART II', (365, 80 + odstep), style=wx.ALIGN_CENTER).SetFont(font)
    self.btn = wx.Button(self, -1, "Change panel", (345, 500))
    self.btn_dodaj_rewir1 = wx.Button(self, -1, "Add name", (345, 42 + odstep))
    self.btn_dodaj_rewir2 = wx.Button(self, -1, "Add name", (345, 84 + odstep1))
    self.Bind(wx.EVT_BUTTON, self.new_name, self.btn_dodaj_rewir1)

【问题讨论】:

    标签: python wxpython


    【解决方案1】:
    • 您需要保存wx.StaticText 实例化。稍后更改它的属性。
      • 使用SetPosition方法改变位置。
    • EVT_BUTTON 事件绑定到事件处理程序(以下代码中的change_pos)。

    class Glowne(wx.Panel):
        def __init__(self, parent):
            wx.Panel.__init__(self, parent=parent)
            tekst = 'HELLO - position'
            font = wx.Font(18, wx.DEFAULT, wx.NORMAL, wx.NORMAL)
            self.text = wx.StaticText(self, -1, tekst, (300, 55))  # Save for later use
            self.text.SetFont(font)
    
            btn = wx.Button(self, -1, "Change pos", (345, 100))
            btn.Bind(wx.EVT_BUTTON, self.change_pos)
    
        def change_pos(self, event):
            x, y = self.text.Position
            self.text.SetPosition((x, y + 10))
    

    【讨论】:

    • 我还有一个问题。在我的程序中有一个 for 循环。我需要修改所有项目的位置。当我使用 SetPosition 时,它只需要循环中的最后一项。有什么想法吗?
    • @Luk,您能否发布另一个新问题,其中包含演示您的问题的代码?
    • 我修改了我的问题并添加了一些代码。我应该开始新话题吗?
    • @Luk,请提出“新”问题。
    猜你喜欢
    • 2016-11-13
    • 1970-01-01
    • 1970-01-01
    • 2014-08-28
    • 1970-01-01
    • 2011-03-22
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    相关资源
    最近更新 更多