大松_Dason 2022-02-23 20:35 采纳率: 100%
浏览 29
已结题

wxPython用盒子布局管理器了但控件全在最左上角

给生肖计算器加上了图形用户界面,可是盒子布局管理器不知道为什么有问题

# coding=utf-8
import wx

class ADCal(wx.Frame):
    def cal(self, event):
        year = text_box.GetValue()
        if year.isdigit() == True:
            int(year)
        else:
            self.result = wx.SetLabelText('请输入整数')

        # 计算公元年份和公元前年份生肖的表达式与所有生肖
        AA = (year - 1) % 12
        AB = (year - 1) % 10
        AD = ["鸡", "狗", "猪", "鼠", "牛", "虎", "兔", "龙", "蛇", "马", "羊", "猴"]

        # 解决year为0导致的异常
        try:
            # 判断年份为公元后还是公元前并输出结果
            if year >= 1:
                wx.SetLabelText('生肖:{}'.format(AD[AA]))
            else:
                wx.SetLabelText('生肖:{}'.format(AD[AB + 1]))
        except IndexError as e:
            self.result = wx.SetLabelText('没有公元0年')
        finally:
            finally = ''

    def __init__(self):
        super().__init__(None, title='生肖计算器', size=(280, 110), pos=(0, 0))
        panel = wx.Panel(parent=self)
        self.caption = wx.StaticText(parent=panel, label='输入公元前年份需加上负号,年份不能为0,输入q退出。')
        self.text_type = wx.StaticText(parent=panel, label='年份:')
        text_box = wx.TextCtrl(panel)
        button = wx.Button(parent=panel, label='计算')
        self.Bind(wx.EVT_BUTTON, self.cal, button)
        self.result_type = wx.StaticText(parent=panel, label='生肖:')
        self.result = wx.StaticText(parent=panel, label='')

        # 布局管理
        hbox = wx.BoxSizer(wx.HORIZONTAL)
        hbox.Add(text_box, proportion=2, flag=wx.EXPAND | wx.ALL, border=10)
        hbox.Add(button, proportion=1, flag=wx.EXPAND | wx.ALL, border=10)
        
        vbox = wx.BoxSizer(wx.VERTICAL)
        vbox.Add(self.caption, proportion=1, flag=wx.ALIGN_LEFT | wx.FIXED_MINSIZE | wx.ALL, border=10)
        vbox.Add(self.text_type, proportion=1, flag=wx.ALIGN_LEFT | wx.FIXED_MINSIZE | wx.LEFT, border=10)
        vbox.Add(hbox, proportion=1, flag=wx.ALIGN_LEFT)
        vbox.Add(self.result_type, proportion=1, flag=wx.ALIGN_LEFT | wx.FIXED_MINSIZE | wx.ALL, border=10)
        vbox.Add(self.result, proportion=1, flag=wx.ALIGN_LEFT | wx.FIXED_MINSIZE | wx.LEFT, border=10)

app = wx.App()
frm = ADCal()
frm.Show()
app.MainLoop()

控件位置不对

img

  • 写回答

2条回答 默认 最新

查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月4日
  • 已采纳回答 2月24日
  • 创建了问题 2月23日

悬赏问题

  • ¥15 etcd集群部署问题
  • ¥20 谁可以帮我一下问一下各位
  • ¥15 为何重叠加权后love图的SMD与svyCreateTableOne函数绘制基线表的不一致
  • ¥15 QFILHelper怎么恢复全字库,提示进程已完成,只能恢复分区文件
  • ¥150 求 《小魔指》街机游戏机整合模拟软件
  • ¥20 你好,我想问下easyExcel下拉多选,或者复选框可以实现吗
  • ¥20 双非跨考工科哪个专业和方向就业前景好?
  • ¥20 求会6sv辐射传输模型,辅导(可py6s🙏🏻有偿
  • ¥15 .xla后缀的文件拖到excel里什么内容也没有怎么办
  • ¥20 Workbench中Mechanical打不开、闪退是什么原因?