已有184人关注
实例04调试错误
发表在Python图书答疑 2020-08-27 悬赏:1 学分 《零基础学Python》第12章 GUI界面编程 296页-297页
是否精华
版块置顶:

调试该段程序时报如下信息:

Sizer.Add(): arguments did not match any overloaded call:
  overload 1: argument 1 has unexpected type 'BoxSizer'
  overload 2: argument 1 has unexpected type 'BoxSizer'
  overload 3: 'proportion' is not a valid keyword argument
  overload 4: 'horder' is not a valid keyword argument

请问该如何解决?

分享到:
精彩评论 2
andy
学分:2118 LV10
TA的每日心情
继续努力
2017-02-06 23:42:34
2020-08-28
沙发

读者你好:

    请使用书中附带源码

Bespell
学分:12 LV2
2020-08-28
板凳

andy 发表于2020-08-28 08:36

读者你好:

    请使用书中附带源码

源码如下,与书中源码相比,仅对变量名的全名方式作了点变动,请老师指正:

# -*- coding:utf-8 -*-

import wx  # 导入wxPython


class MyFrame(wx.Frame):
    def __init__(self,parent,id):
        wx.Frame.__init__(self,parent,id,title="创建TextCtrl类",size=(400,300))
        panel = wx.Panel(self)        # 创建画板
       
        # 创建文本和输入框
        self.title = wx.StaticText(panel,label="请输入用户名和密码")
        self.labelUser = wx.StaticText(panel,label="用户名")
        self.textUser = wx.TextCtrl(panel,style=wx.TE_LEFT)
        self.labelPwd = wx.StaticText(panel,label="密  码")
        self.textPwd = wx.TextCtrl(panel,style=wx.TE_PASSWORD)
        # 创建"确定"和"取消"按钮
        self.btConfirm = wx.Button(panel,label="确定")
        self.btConfirm.Bind(wx.EVT_BUTTON,self.OnclickSubmit)
        self.btCancel = wx.Button(panel,label="取消")
        self.btCancel.Bind(wx.EVT_BUTTON,self.OnclickCancel)
        # 添加容器,容器中控件横向排列
        self.hsizerUser = wx.BoxSizer()
        self.hsizerUser.Add(self.labelUser,proportion=0,flag=wx.ALL,border=5,userData=None)
        self.hsizerUser.Add(self.textUser,proportion=1,flag=wx.ALL,border=5,userData=None)
        self.hsizerPwd = wx.BoxSizer()
        self.hsizerPwd.Add(self.labelPwd,proportion=0,flag=wx.ALL,border=5,userData=None)
        self.hsizerPwd.Add(self.textPwd,proportion=1,flag=wx.ALL,border=5,userData=None)
        self.hsizerButton = wx.BoxSizer()
        self.hsizerButton.Add(self.btConfirm,proportion=0,flag=wx.ALIGN_CENTER,border=5,userData=None)
        self.hsizerButton.Add(self.btCancel,proportion=0,flag=wx.ALIGN_CENTER,border=5,userData=None)
        # 添加容器,容器中的控件纵向排列
        self.vsizerAll = wx.BoxSizer(wx.VERTICAL)
        self.vsizerAll.Add(self.title,proportion=0,flag=wx.BOTTOM|wx.TOP|wx.ALIGN_CENTER,border=15,userData=None)
        self.vsizerAll.Add(self.hsizerUser,proportion=0,flag=wx.EXPAND|wx.LEFT|wx.RIGHT,horder=45,userData=None)
        self.vsizerAll.Add(self.hsizerPwd,proportion=0,flag=wx.EXPAND|wx.LEFT|wx.RIGHT,horder=45,userData=None)
        self.vsizerAll.Add(self.hsizerButton,proportion=0,flag=wx.ALIGN_CENTER|wx.TOP,horder=15,userData=None)
       
        self.panel.SetSizer(self.vsizerAll)

    def OnclickSubmit(self,event):
        """单击确定按钮, 执行方法"""
        message = ""
        userName = self.textUser.GetValue()             # 获取输入的用户名
        password = self.textPwd.GetValue()              # 获取输入的密码
        if userName=="" or password=="":
            message = "用户名或密码不能为空"
        elif userName=="mr" and password=="mrsoft":     # 用户名和密码正确
            message = "登录成功"
        else:
            message = "用户名和密码不匹配"              # 用户名或密码错误
        wx.MessageBox(message)                          # 弹出提示框

    def OnclickCancel(self,event):
        """ 单击取消按纽,执行方法 """
        self.textUser.SetValue("")                      # 清空输入的用户名
        self.textPwd.SetValue("")                       # 清空输入的密码

if __name__ == "__main__":
 app = wx.App()  # 初始化应用
 frame = MyFrame(parent=None,id=-1)    # 实例MyFrame类,并传递参数
 frame.Show()     # 显示窗口
 app.MainLoop()  # 调用MainLoop()主循环方法


首页上一页 1 下一页尾页 2 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照