Me gustaría crear una ventana con forma simple en wxPython. Más o menos quiero hacer el wx equivalente a de Tkinter self.overrideredirect (1) (Se deshace de la interfaz predeterminada del sistema operativo), luego redondeo las esquinas de la ventana.¿Cuál es la forma más sencilla de crear una ventana con forma en wxPython?
Respuesta
Hay una demo de marco en forma en las demostraciones de wxPython. Me disculpo por la fuente indirecta. Ellos vinieron originalmente como un instalador de ventanas here:
usted querrá mirar shaped_frame_mobile.py o shaped_frame.py, que ambos llaman images.py de ese listado para el mapa de bits ventana de muestra. No es el equivalente exacto a overrideredirect
ya que tendrá que proporcionar una imagen para dibujar para el marco, pero aún podría ayudarlo a lograr algo similar.
Las partes importantes son las funciones que establecen la forma de ventanas basado en el mapa de bits y controlen el evento wx.EVT_PAINT:
def SetWindowShape(self, evt=None):
r = wx.RegionFromBitmap(self.bmp)
self.hasShape = self.SetShape(r)
def OnPaint(self, evt):
dc = wx.PaintDC(self)
dc.DrawBitmap(self.bmp, 0,0, True)
Editar - He aquí un shaped_frame_mobile.py
alterado que carga la imagen .png especificado en el IMAGE_PATH variable. Cambie eso para apuntar a su imagen:
import wx
# Create a .png image with something drawn on a white background
# and put the path to it here.
IMAGE_PATH = '/python26/projects/shapedwin/image.png'
class ShapedFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1, "Shaped Window",
style = wx.FRAME_SHAPED | wx.SIMPLE_BORDER)
self.hasShape = False
self.delta = wx.Point(0,0)
# Load the image
image = wx.Image(IMAGE_PATH, wx.BITMAP_TYPE_PNG)
image.SetMaskColour(255,255,255)
image.SetMask(True)
self.bmp = wx.BitmapFromImage(image)
self.SetClientSize((self.bmp.GetWidth(), self.bmp.GetHeight()))
dc = wx.ClientDC(self)
dc.DrawBitmap(self.bmp, 0,0, True)
self.SetWindowShape()
self.Bind(wx.EVT_LEFT_DCLICK, self.OnDoubleClick)
self.Bind(wx.EVT_LEFT_DOWN, self.OnLeftDown)
self.Bind(wx.EVT_LEFT_UP, self.OnLeftUp)
self.Bind(wx.EVT_MOTION, self.OnMouseMove)
self.Bind(wx.EVT_RIGHT_UP, self.OnExit)
self.Bind(wx.EVT_PAINT, self.OnPaint)
self.Bind(wx.EVT_WINDOW_CREATE, self.SetWindowShape)
def SetWindowShape(self, evt=None):
r = wx.RegionFromBitmap(self.bmp)
self.hasShape = self.SetShape(r)
def OnDoubleClick(self, evt):
if self.hasShape:
self.SetShape(wx.Region())
self.hasShape = False
else:
self.SetWindowShape()
def OnPaint(self, evt):
dc = wx.PaintDC(self)
dc.DrawBitmap(self.bmp, 0,0, True)
def OnExit(self, evt):
self.Close()
def OnLeftDown(self, evt):
self.CaptureMouse()
pos = self.ClientToScreen(evt.GetPosition())
origin = self.GetPosition()
self.delta = wx.Point(pos.x - origin.x, pos.y - origin.y)
def OnMouseMove(self, evt):
if evt.Dragging() and evt.LeftIsDown():
pos = self.ClientToScreen(evt.GetPosition())
newPos = (pos.x - self.delta.x, pos.y - self.delta.y)
self.Move(newPos)
def OnLeftUp(self, evt):
if self.HasCapture():
self.ReleaseMouse()
if __name__ == '__main__':
app = wx.PySimpleApp()
ShapedFrame().Show()
app.MainLoop()
- 1. Forma más sencilla de crear un HWND
- 2. ¿Cuál es la forma más sencilla de intercambiar char en una cadena con Python?
- 3. ¿Cuál es la forma más sencilla de formatear una marca de tiempo de SQL en PHP?
- 4. ¿Cuál es la forma más sencilla de agregar uno a una cadena binaria en Perl?
- 5. ¿Cuál es la forma más sencilla de realizar una solicitud HTTP GET en Perl?
- 6. ¿Cuál es la forma más sencilla de extender una matriz numpy en 2 dimensiones?
- 7. ¿Cuál es la forma más sencilla de conectar un dispositivo a un iPad desde una aplicación?
- 8. ¿Cuál es la forma más sencilla de obtener resultados de scripts de Python en la web?
- 9. ¿Cuál es la forma más sencilla de acceder a mssql con python o ironpython?
- 10. VBScript: ¿Cuál es la forma más sencilla de formatear una cadena?
- 11. ANTLR ¿Cuál es la forma más sencilla de realizar una gramática dependiente de sangría de pitón?
- 12. ¿Cuál es la forma más eficiente de crear ListBuffer vacío?
- 13. forma más sencilla de analizar una fecha en Javascript
- 14. ¿Cuál es la forma más sencilla de escribir bibliotecas portátiles cargables dinámicamente en C++?
- 15. ¿Cuál es la forma más sencilla de ofrecer/consumir servicios web en jython?
- 16. ¿Cuál es la forma más sencilla de convertir char [] a/de tchar [] en C/C++ (ms)?
- 17. ¿Cuál es la forma más sencilla de colocar una secuencia de comandos python en la bandeja del sistema (Windows)
- 18. ¿Cuál es la forma más sencilla de implementar el cifrado en WCF cuando se usa netTcpBinding?
- 19. ¿Cuál es la forma más sencilla de actualizar la plataforma haskell a la última?
- 20. ¿Cuál es la forma más sencilla de escribir aplicaciones web en Haskell?
- 21. En winforms, ¿cuál es la forma más rápida de crear una ventana que muestre la salida de la consola?
- 22. Crear una ventana en qt con forma de una imagen
- 23. ¿Cuál es la forma más sencilla de muestrear continuamente desde la línea de entrada utilizando C#
- 24. ¿Cuál es la forma más sencilla de mostrar httpServletResponse.sendError (403, "Mi Mensaje") Estado de JSTL
- 25. ¿Qué significa "lambda" en Python, y cuál es la forma más sencilla de usarlo?
- 26. Cuál es la forma más sencilla de bloquear un objeto en Django
- 27. ¿Cuál es la forma más sencilla de reproducir un MP3 en WPF?
- 28. ¿Cuál es la forma más fácil de crear una tabla de Excel con C#?
- 29. ¿Cuál es la forma más sencilla de cargar dinero a través de Internet?
- 30. forma más sencilla de comprobar si hay espacios en ruby
Gracias, aunque hace referencia a un módulo de "imágenes". No estoy exactamente seguro de qué módulo es eso. ¿Tienes alguna pista? – rectangletangle
Es el archivo 'images.py' del enlace fuente de arriba. Puede colocarlo en el mismo directorio que los demás o deshacerse de 'importar imágenes' y cargar su propio mapa de bits en lugar de la línea' images.getVippiBitmap() '. No sé por qué la demostración usa un módulo de python para proporcionar una imagen. –
@ Anteater7171 Agregué el código modificado a mi respuesta. Es más fácil de mostrar que de explicar. –