亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

wxpython:GridBagSizer 讓我很困惑

wxpython:GridBagSizer 讓我很困惑

揚帆大魚 2021-11-30 16:33:29
我是 python GUI 的新手,wxpython也是。現在我面臨以下問題。這里的代碼是import wxclass Example(wx.Frame):    def __init__(self, parent, title):        super(Example, self).__init__(parent, title=title)        self.InitUI()        self.Centre()        self.Show()    def InitUI(self):        panel = wx.Panel(self)        sizer = wx.GridBagSizer(0, 0)        text = wx.StaticText(panel, label="Name:")        sizer.Add(text, pos=(0, 0), flag=wx.ALL, border=5)        tc = wx.TextCtrl(panel)        sizer.Add(tc, pos=(0, 1), span=(1, 2), flag=wx.EXPAND | wx.ALL, border=5)        text1 = wx.StaticText(panel, label="address")        sizer.Add(text1, pos=(1, 0), flag=wx.ALL, border=5)        tc1 = wx.TextCtrl(panel, style=wx.TE_MULTILINE)        sizer.Add(tc1, pos=(1, 1), span=(1, 3), flag=wx.EXPAND | wx.ALL, border=5)        text11 = wx.StaticText(panel, label="address2")        sizer.Add(text11, pos=(1, 4), flag=wx.ALL, border=5)        tc11 = wx.TextCtrl(panel, style=wx.TE_MULTILINE)        sizer.Add(tc11, pos=(1, 5), span=(1, 3), flag=wx.EXPAND | wx.ALL, border=5)        text2 = wx.StaticText(panel, label="age")        sizer.Add(text2, pos=(2, 0), flag=wx.ALL, border=5)        tc2 = wx.TextCtrl(panel)        sizer.Add(tc2, pos=(2, 1), flag=wx.ALL, border=5)        text3 = wx.StaticText(panel, label="Mob.No")        sizer.Add(text3, pos=(2, 2), flag=wx.ALIGN_CENTER | wx.ALL, border=5)這里的結果是讓我感到困惑的是標簽。address2它顯然沒有跨越三列。text11 = wx.StaticText(panel, label="address2")sizer.Add(text11, pos=(1, 4), flag=wx.ALL, border=5)tc11 = wx.TextCtrl(panel, style=wx.TE_MULTILINE)sizer.Add(tc11, pos=(1, 5), span=(1, 3), flag=wx.EXPAND | wx.ALL, border=5)但是address2標簽的代碼與標簽相同,address除了 param pos。有人可以解釋一下。環境:python3.7/wxpython4.0.4(最新)
查看完整描述

1 回答

?
墨色風雨

TA貢獻1853條經驗 獲得超6個贊

那3列的定義是什么?

您是否為要使用的第 5,6 和 7 列定義了任何內容sizer?

沒有東西可以使用 sizer 不知道這些列有多大,所以你必須給它一些東西來使用或定義一個空的單元格大小。


import wx


class Example(wx.Frame):


    def __init__(self, parent, title):

        super(Example, self).__init__(parent, title=title, size=(750,-1))


        self.InitUI()

        self.Centre()

        self.Show()


    def InitUI(self):

        panel = wx.Panel(self, -1)

        sizer = wx.GridBagSizer(0, 7)


        text = wx.StaticText(panel, label="Name:")

        sizer.Add(text, pos=(0, 0), flag=wx.ALL, border=5)

#

# place some dummy text to give the sizer something to work with

#

#        dummy4 = wx.StaticText(panel, label="something")

#        sizer.Add(dummy4, pos=(0, 4), flag=wx.ALL, border=5)

#        dummy5 = wx.StaticText(panel, label="something")

#        sizer.Add(dummy5, pos=(0, 5), flag=wx.ALL, border=5)

#        dummy6 = wx.StaticText(panel, label="something")

#        sizer.Add(dummy6, pos=(0, 6), flag=wx.ALL, border=5)

#        dummy7 = wx.StaticText(panel, label="something")

#        sizer.Add(dummy7, pos=(0, 7), flag=wx.ALL, border=5)

#

# or set a cell size for empty cells

#

        sizer.SetEmptyCellSize((130,20))


        tc = wx.TextCtrl(panel)

        sizer.Add(tc, pos=(0, 1), span=(1, 2), flag=wx.EXPAND | wx.ALL, border=5)


        text1 = wx.StaticText(panel, label="address")

        sizer.Add(text1, pos=(1, 0), flag=wx.ALL, border=5)


        tc1 = wx.TextCtrl(panel, style=wx.TE_MULTILINE)

        sizer.Add(tc1, pos=(1, 1), span=(1, 3), flag=wx.EXPAND | wx.ALL, border=5)


        text11 = wx.StaticText(panel, label="address2")

        sizer.Add(text11, pos=(1, 4), flag=wx.ALL, border=5)


        tc11 = wx.TextCtrl(panel, style=wx.TE_MULTILINE)

        sizer.Add(tc11, pos=(1, 5), span=(1, 3), flag=wx.EXPAND | wx.ALL, border=5)


        text2 = wx.StaticText(panel, label="age")

        sizer.Add(text2, pos=(2, 0), flag=wx.ALL, border=5)


        tc2 = wx.TextCtrl(panel)

        sizer.Add(tc2, pos=(2, 1), flag=wx.ALL, border=5)


        text3 = wx.StaticText(panel, label="Mob.No")

        sizer.Add(text3, pos=(2, 2), flag=wx.ALIGN_CENTER | wx.ALL, border=5)


        tc3 = wx.TextCtrl(panel)

        sizer.Add(tc3, pos=(2, 3), flag=wx.EXPAND | wx.ALL, border=5)


        text4 = wx.StaticText(panel, label="Description")

        sizer.Add(text4, pos=(3, 0), flag=wx.ALL, border=5)


        tc4 = wx.TextCtrl(panel, style=wx.TE_MULTILINE)

        sizer.Add(tc4, pos=(3, 1), span=(1, 3), flag=wx.EXPAND | wx.ALL, border=5)

        sizer.AddGrowableRow(3)


        buttonOk = wx.Button(panel, label="Ok")

        buttonClose = wx.Button(panel, label="Close")


        sizer.Add(buttonOk, pos=(4, 2), flag=wx.ALL, border=5)

        sizer.Add(buttonClose, pos=(4, 3), flag=wx.ALL, border=5)


        panel.SetSizerAndFit(sizer)


app = wx.App()

Example(None, title='GridBag Demo')

app.MainLoop()

ps 如果您只是將地址 2 放在地址 1 下方,則布局可能會更好

http://img1.sycdn.imooc.com//61a5e20e0001eef207460489.jpg

查看完整回答
反對 回復 2021-11-30
  • 1 回答
  • 0 關注
  • 171 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號