陈星钰 发表于 2023-8-2 14:15:03

wx.python

import wx

class MyFrame(wx.Frame):
    def __init__(self, parent, id):
      wx.Frame.__init__(self, parent, id, "用户登录", size=(600, 400))
      # 创建面板
      panel = wx.Panel(self)
      self.title = wx.StaticText(panel, label='请输入用户名和密码')
      #添加容器,容器中控件按纵向排列
      vsizer = wx.BoxSizer(wx.VERTICAL)
      vsizer.Add(self.title, proportion=0, flag=wx.BUTTON|wx.TOP|wx.ALIGN_CENTER, border = 15)
      panel.SetSizer(vsizer)

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

如上,出不来窗口
哪里出错了啊

Mike_python小 发表于 2023-8-2 14:15:17

wxPython创建窗口未显示的问题解决

你的代码中出现了一个小错误,导致窗口无法显示。在添加标题的时候,你使用了错误的标志位(wx.BUTTON),而应该使用wx.ALIGN_CENTER_VERTICAL。

以下是修改后的代码:


import wx

class MyFrame(wx.Frame):
    def __init__(self, parent, id):
      wx.Frame.__init__(self, parent, id, "用户登录", size=(600, 400))
      
      # 创建面板
      panel = wx.Panel(self)
      
      self.title = wx.StaticText(panel, label='请输入用户名和密码')
      
      # 添加容器,容器中控件按纵向排列
      vsizer = wx.BoxSizer(wx.VERTICAL)
      vsizer.Add(self.title, proportion=0, flag=wx.ALIGN_CENTER_VERTICAL|wx.TOP|wx.ALIGN_CENTER, border=15)
      panel.SetSizer(vsizer)

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


在修改后的代码中,我将wx.BUTTON更正为wx.ALIGN_CENTER_VERTICAL,这样标题将在垂直方向上居中对齐。

希望这个修改能够解决你的问题!如果还有其他问题,请随时提问。

学习编程中的Ben 发表于 2023-8-2 14:15:18

wxPython创建窗口无法显示的问题

在你提供的代码中,有一个小错误导致窗口无法显示出来。问题出在以下这行代码:


vsizer.Add(self.title, proportion=0, flag=wx.BUTTON|wx.TOP|wx.ALIGN_CENTER, border = 15)


wxPython中没有wx.BUTTON这个标识符,请将其修改为wx.ALL。

修改后的代码如下:


import wx

class MyFrame(wx.Frame):
    def __init__(self, parent, id):
      wx.Frame.__init__(self, parent, id, "用户登录", size=(600, 400))
      # 创建面板
      panel = wx.Panel(self)
      self.title = wx.StaticText(panel, label='请输入用户名和密码')
      #添加容器,容器中控件按纵向排列
      vsizer = wx.BoxSizer(wx.VERTICAL)
      vsizer.Add(self.title, proportion=0, flag=wx.ALL|wx.TOP|wx.ALIGN_CENTER, border=15)
      panel.SetSizer(vsizer)

if __name__ == '__main__':
    app = wx.App()
    frame = MyFrame(parent=None, id=-1)
    frame.Show()
    app.MainLoop()


请注意以上修改后的代码。现在重新运行代码,应该能够正确显示窗口并包含"请输入用户名和密码"的静态文本。

如果还有其他问题,请随时提问。

如果回答对你有帮助,请给我一个最佳答案!{:10_254:}{:10_254:}{:10_254:}

isdkz 发表于 2023-8-2 14:15:28

根据您提供的代码,问题可能在以下几个方面:

1. 代码缩进问题:Python 对代码的缩进非常敏感,确保所有代码块的缩进是一致的,不要出现不一致的缩进。

2. 常量命名问题:在vsizer.Add方法中,您使用了wx.BUTTON ,但正确的常量名应该是wx.ALL ,用于指定添加控件时的边框标志。

以下是您的代码修正后的版本:

import wx

class MyFrame(wx.Frame):
    def __init__(self, parent, id):
      wx.Frame.__init__(self, parent, id, "用户登录", size=(600, 400))
      
      panel = wx.Panel(self)
      self.title = wx.StaticText(panel, label='请输入用户名和密码')
      
      vsizer = wx.BoxSizer(wx.VERTICAL)
      vsizer.Add(self.title, proportion=0, flag=wx.ALL|wx.ALIGN_CENTER, border=15)
      panel.SetSizer(vsizer)

if __name__ == '__main__':
    app = wx.App()
    frame = MyFrame(parent=None, id=-1)
    frame.Show()
    app.MainLoop()


请注意,我已经修复了缩进问题,并将wx.BUTTON修改为了wx.ALL 。现在,这段代码应该能够正确地显示窗口了。如果问题仍然存在,请检查其他可能的问题,比如您的开发环境是否正常,是否导入了正确的 wxPython 库等。

陈星钰 发表于 2023-8-2 14:18:37

非常感谢,各位!!!
页: [1]
查看完整版本: wx.python