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

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日

悬赏问题

  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥15 键盘指令混乱情况下的启动盘系统重装
  • ¥40 复杂的限制性的商函数处理