风子是我 发表于 2020-11-29 22:34

Python错误提示,弄不明白应该如何改正。

本帖最后由 风子是我 于 2020-11-29 23:04 编辑

我初学Python,用了论坛的wxPython可视化设计器做了个界面,想实现如下图的功能,点“确定”时的功能已经好了,点“取消”时不会。
运行界面应该如下:(下面是我把按钮“取消”注释掉后的界面)



不注释掉第二个按钮,出现如下提示:


代码如下:
# -*- coding:utf-8 -*-
import wx

class Frame(wx.Frame):
    def __init__(self):
      wx.Frame.__init__(self, None, title='用户登录', size=(400, 300),name='frame',style=541072960)
      self.qdck = wx.Panel(self)
      self.Centre()
      self.an1 = wx.Button(self.qdck,size=(89, 32),pos=(90, 155),label='确定',name='button')
      self.an1.Bind(wx.EVT_BUTTON,self.an1_anbdj)
      self.bq1 = wx.StaticText(self.qdck,size=(195, 22),pos=(85, 16),label='请输入用户名和密码',name='staticText',style=2321)
      self.bq2 = wx.StaticText(self.qdck,size=(90, 26),pos=(25, 57),label='用户名:',name='staticText',style=2321)
      self.bq3 = wx.StaticText(self.qdck,size=(80, 24),pos=(33, 93),label='密    码:',name='staticText',style=2321)
      self.bjk1 = wx.TextCtrl(self.qdck,size=(157, 25),pos=(114, 51),value='',name='text',style=0)
      self.bjk2 = wx.TextCtrl(self.qdck,size=(157, 25),pos=(112, 88),value='',name='text',style=0)
      self.an2 = wx.Button(self.qdck,size=(89, 32),pos=(186, 154),label='取消',name='button')
      self.an2.Bind(wx.EVT_BUTTON,self.an2_anbdj)


    def an1_anbdj(self,event):
      """ 点击确定按钮,执行方法 """
      message = ""
      username = self.bjk1.GetValue()   # 获取输入的用户名
      password = self.bjk2.GetValue() # 获取输入的密码
      if username == "" or password == "" :    # 判断用户名或密码是否为空
            message = '用户名或密码不能为空'
      elif username =='admin' and password =='123': # 用户名和密码正确
            message = '登录成功'
      else:
            message = '用户名和密码不匹配'            # 用户名或密码错误   
      wx.MessageBox(message)                        # 弹出提示框


    def an2_anbdj(self,event):
         """ 点击取消按钮,执行方法 """
      self.bjk1.SetValue("") # 清空输入的用户名
      self.bjk2.SetValue("") # 清空输入的密码

class myApp(wx.App):
    defOnInit(self):
      self.frame = Frame()
      self.frame.Show(True)
      return True

if __name__ == '__main__':
    app = myApp()
    app.MainLoop()


菜菜同学 发表于 2020-11-29 22:50

没看懂啥意思                  

塞北的雪 发表于 2020-11-29 22:57

# -*- coding:utf-8 -*-
import wx

class Frame(wx.Frame):
        def __init__(self):
                wx.Frame.__init__(self, None, title='用户登录', size=(400, 300),name='frame',style=541072960)
                self.qdck = wx.Panel(self)
                self.Centre()
                self.an1 = wx.Button(self.qdck,size=(89, 32),pos=(90, 155),label='确定',name='button')
                self.an1.Bind(wx.EVT_BUTTON,self.an1_anbdj)
                self.bq1 = wx.StaticText(self.qdck,size=(195, 22),pos=(85, 16),label='请输入用户名和密码',name='staticText',style=2321)
                self.bq2 = wx.StaticText(self.qdck,size=(90, 26),pos=(25, 57),label='用户名:',name='staticText',style=2321)
                self.bq3 = wx.StaticText(self.qdck,size=(80, 24),pos=(33, 93),label='密    码:',name='staticText',style=2321)
                self.bjk1 = wx.TextCtrl(self.qdck,size=(157, 25),pos=(114, 51),value='',name='text',style=0)
                self.bjk2 = wx.TextCtrl(self.qdck,size=(157, 25),pos=(112, 88),value='',name='text',style=0)
                self.an2 = wx.Button(self.qdck,size=(89, 32),pos=(186, 154),label='取消',name='button')
                self.an2.Bind(wx.EVT_BUTTON,self.an2_anbdj)


        def an1_anbdj(self,event):
                """ 点击确定按钮,执行方法 """
                message = ""
                username = self.bjk1.GetValue()    #获取输入的用户名
                password = self.bjk2.GetValue()    #获取输入的密码
                if username == "" or password == "" :    #判断用户名或密码是否为空
                        message = '用户名或密码不能为空'
                elif username =='admin' and password =='123': #用户名和密码正确
                        message = '登录成功'
                else:
                        message = '用户名和密码不匹配'            #用户名或密码错误
                wx.MessageBox(message)                        #弹出提示框


        def an2_anbdj(self,event):
                """ 点击取消按钮,执行方法 """
                self.bjk1.SetValue("") # 清空输入的用户名
                self.bjk2.SetValue("") # 清空输入的密码

class myApp(wx.App):
        defOnInit(self):
                self.frame = Frame()
                self.frame.Show(True)
                return True

if __name__ == '__main__':
        app = myApp()
        app.MainLoop()

还是用TAB进行缩进吧,空格的问题

风子是我 发表于 2020-11-29 23:01

塞北的雪 发表于 2020-11-29 22:57
# -*- coding:utf-8 -*-
import wx



奇怪,我是用的Tab缩进,看上去你的代码与我的一样,你的可以运行,我的就出错
这个缩进看上去也没啥不同啊。
谢谢

风子是我 发表于 2020-11-29 23:04

本帖最后由 风子是我 于 2020-11-29 23:05 编辑

明白了,原来是注释语句的问题,注释语句的缩进也有要求啊?
受教了,谢谢@塞北的雪

冰水混合物 发表于 2020-11-30 00:06

啊,不说注释我还真没想带那里去,受教了{:1_921:}

sz090955 发表于 2020-11-30 01:37

unindent一般都是缩进错了的问题

tsecond 发表于 2020-11-30 03:45

看看你的源代码 有些代码没有正确对齐空格和制表符混用的。少空格的 自己检查一下!

seeyou_shj 发表于 2020-11-30 08:45

风子是我 发表于 2020-11-29 23:04
明白了,原来是注释语句的问题,注释语句的缩进也有要求啊?
受教了,谢谢@塞北的雪

注释不要用
"""这里是注释“”“
这种模式。这种的实际上是长字符串的定义,不是严格意义上的注释。python认为这是一条语句,所以才会出错。

c00144 发表于 2020-11-30 09:05

学习学习
页: [1] 2
查看完整版本: Python错误提示,弄不明白应该如何改正。