Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
wxpython-won';在面板上画矩形_Python_Wxpython - Fatal编程技术网

wxpython-won';在面板上画矩形

wxpython-won';在面板上画矩形,python,wxpython,Python,Wxpython,我正在尝试创建聊天客户端,从中获取用户输入,并将其显示在我试图绘制的白色矩形上。我尝试在面板上绘制矩形,但出现了此错误 Traceback (most recent call last): File "C:\Python27\client with gui.py", line 26, in <module> frame = WindowFrame(None, 'ChatClient') File "C:\Python27\client with gui.py", li

我正在尝试创建聊天客户端,从中获取用户输入,并将其显示在我试图绘制的白色矩形上。我尝试在面板上绘制矩形,但出现了此错误

Traceback (most recent call last):
  File "C:\Python27\client with gui.py", line 26, in <module>
    frame = WindowFrame(None, 'ChatClient')
  File "C:\Python27\client with gui.py", line 12, in __init__
    self.panel.Bind(wx.EVT_PAINT, self.OnPaint)
AttributeError: 'WindowFrame' object has no attribute 'panel'


import socket
import wx

class WindowFrame(wx.Frame):
    def __init__(self, parent, title):
        wx.Frame.__init__(self, parent, title = title, size=(500, 400))
        panel=wx.Panel(self)
        panel.SetBackgroundColour("#E6E6E6")
        self.control = wx.TextCtrl(panel, style = wx.TE_MULTILINE, size =(410, 28), pos=(0,329))

        sendbutton=wx.Button(panel, label ="Send", pos =(414,325), size=(65,35))
        self.panel.Bind(wx.EVT_PAINT, self.OnPaint)

        self.Centre()
        self.Show()


    def OnPaint(self, event):
        dc = wx.PaintDC(self)
        dc.SetPen(wx.Pen('#d4d4d4'))
        dc.SetBrush(wx.Brush('#c56c00'))
        dc.DrawRectangle(10, 15, 90, 60)
        self.Show(True)
if __name__=="__main__": 
    app = wx.App(False)
    frame = WindowFrame(None, 'ChatClient')
    app.MainLoop()
回溯(最近一次呼叫最后一次):
文件“C:\Python27\client with gui.py”,第26行,在
frame=WindowFrame(无,'ChatClient')
文件“C:\Python27\client with gui.py”,第12行,在\uuu init中__
自面板绑定(wx.EVT_油漆,自上油漆)
AttributeError:“WindowFrame”对象没有“panel”属性
导入套接字
导入wx
类WindowFrame(wx.Frame):
定义初始(自我、父母、头衔):
wx.Frame.\uuuuu init\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
面板=wx.面板(自)
面板.立根底色(“E6”)
self.control=wx.TextCtrl(面板,样式=wx.TE_多行,大小=(410,28),位置=(0329))
sendbutton=wx.按钮(面板,label=“Send”,位置=(414325),大小=(65,35))
自面板绑定(wx.EVT_油漆,自上油漆)
自我中心()
self.Show()
def OnPaint(自身、事件):
dc=wx.PaintDC(自)
dc.SetPen(wx.Pen('#d4'))
直流立根刷(wx刷('#c56c00'))
dc.DrawRectangle(10,15,90,60)
自我展示(真实)
如果名称=“\uuuuu main\uuuuuuuu”:
app=wx.app(假)
frame=WindowFrame(无,'ChatClient')
app.MainLoop()
此行:

    self.panel.Bind(wx.EVT_PAINT, self.OnPaint)
应该是:

    panel.Bind(wx.EVT_PAINT, self.OnPaint)
您的类没有属性
panel
,但它在init中有一个名为
panel
的局部变量

P>可选的,可以考虑让面板属性:

import socket
import wx

class WindowFrame(wx.Frame):
    def __init__(self, parent, title):
        wx.Frame.__init__(self, parent, title = title, size=(500, 400))
        self.panel=wx.Panel(self)
        self.panel.SetBackgroundColour("#E6E6E6")
        self.control = wx.TextCtrl(self.panel, style = wx.TE_MULTILINE, size =(410, 28), pos=(0,329))

        sendbutton=wx.Button(self.panel, label ="Send", pos =(414,325), size=(65,35))
        self.panel.Bind(wx.EVT_PAINT, self.OnPaint)

        self.Centre()
        self.Show()


    def OnPaint(self, event):
        dc = wx.PaintDC(self)
        dc.SetPen(wx.Pen('#d4d4d4'))
        dc.SetBrush(wx.Brush('#c56c00'))
        dc.DrawRectangle(10, 15, 90, 60)
        self.Show(True)
if __name__=="__main__": 
    app = wx.App(False)
    frame = WindowFrame(None, 'ChatClient')
    app.MainLoop()

编辑:正如Mike指出的,绘图例程还有另一个问题。有趣的是,我的电脑没有抱怨这一点……

这一行:

    self.panel.Bind(wx.EVT_PAINT, self.OnPaint)
应该是:

    panel.Bind(wx.EVT_PAINT, self.OnPaint)
您的类没有属性
panel
,但它在init中有一个名为
panel
的局部变量

P>可选的,可以考虑让面板属性:

import socket
import wx

class WindowFrame(wx.Frame):
    def __init__(self, parent, title):
        wx.Frame.__init__(self, parent, title = title, size=(500, 400))
        self.panel=wx.Panel(self)
        self.panel.SetBackgroundColour("#E6E6E6")
        self.control = wx.TextCtrl(self.panel, style = wx.TE_MULTILINE, size =(410, 28), pos=(0,329))

        sendbutton=wx.Button(self.panel, label ="Send", pos =(414,325), size=(65,35))
        self.panel.Bind(wx.EVT_PAINT, self.OnPaint)

        self.Centre()
        self.Show()


    def OnPaint(self, event):
        dc = wx.PaintDC(self)
        dc.SetPen(wx.Pen('#d4d4d4'))
        dc.SetBrush(wx.Brush('#c56c00'))
        dc.DrawRectangle(10, 15, 90, 60)
        self.Show(True)
if __name__=="__main__": 
    app = wx.App(False)
    frame = WindowFrame(None, 'ChatClient')
    app.MainLoop()


编辑:正如Mike指出的,绘图例程还有另一个问题。有趣的是,我的电脑没有对此抱怨…

我相信我在OP中已经回答了这个问题,这与这个基本相同

def OnPaint(self, event):
    dc = wx.PaintDC(self.panel)  # <<< This was changed
    dc.SetPen(wx.Pen('#d4d4d4'))
    dc.SetBrush(wx.Brush('#c56c00'))
    dc.DrawRectangle(10, 15, 90, 60)
def OnPaint(自身,事件):

dc=wx.PaintDC(self.panel)#我相信我在OP中已经回答了这个问题,这与这个基本相同

def OnPaint(self, event):
    dc = wx.PaintDC(self.panel)  # <<< This was changed
    dc.SetPen(wx.Pen('#d4d4d4'))
    dc.SetBrush(wx.Brush('#c56c00'))
    dc.DrawRectangle(10, 15, 90, 60)
def OnPaint(自身,事件):

dc=wx.PaintDC(self.panel)#谢谢,但由于某些原因,我看不到矩形,我的按钮现在被覆盖在gray@user3768136:有趣,我不知道为什么。我放了一张它看起来像什么的图片给我。谢谢,但由于某种原因,我看不到矩形,我的按钮现在被覆盖了gray@user3768136:有趣,我不知道为什么。我放了一张它对我来说是什么样子的照片。哈哈,我觉得很有趣,它只在某些情况下有效,因为有一个bug。我将把我的答案保留在这里,因为我仍然认为它回答了他的部分问题,而且如果有人想要提交bug,我不熟悉如何在那里提交bug。wx-3.0-osx-cocoa:)我想你只要去wxPython的网站,点击“归档一个bug”链接就可以了。然后按照说明进行操作,确保将相应的下拉列表更改为wxPythonOk的正确版本,并提交了错误报告。哈哈,我觉得很有趣,它只在某些情况下因为错误而起作用。我将把我的答案保留在这里,因为我仍然认为它回答了他的部分问题,而且如果有人想要提交bug,我不熟悉如何在那里提交bug。wx-3.0-osx-cocoa:)我想你只要去wxPython的网站,点击“归档一个bug”链接就可以了。然后按照说明进行操作,确保将相应的下拉列表更改为wxPythonOk的正确版本,并提交错误报告。