Học wxPython – Dockable Windows Làm dự án nhận lương – Trung tâm đào tạo Toidayhoc

Học wxPython – Dockable Windows Làm dự án nhận lương

wxPython – Dockable Windows



wxAui là một thư viện Giao diện người dùng nâng cao được tích hợp trong API wxWidgets. Wx.aui.AuiManager là lớp trung tâm trong khuôn khổ AUI.

AuiManager quản lý các ngăn liên kết với một khung cụ thể bằng cách sử dụng thông tin của từng ngăn trong đối tượng wx.aui.AuiPanelInfo. Chúng ta hãy tìm hiểu về các thuộc tính khác nhau của đối tượng PanelInfo kiểm soát hành vi neo và thả nổi.

Việc đặt các cửa sổ có thể neo vào khung cấp cao nhất bao gồm các bước sau −

First, create an AuiManager object.

self.mgr = wx.aui.AuiManager(self)

Then, a panel with required controls is designed.

pnl = wx.Panel(self) 
pbox = wx.BoxSizer(wx.HORIZONTAL) 
text1 = wx.TextCtrl(pnl, -1, "Dockable", style = wx.NO_BORDER | wx.TE_MULTILINE) 
pbox.Add(text1, 1, flag = wx.EXPAND) 
pnl.SetSizer(pbox)

The following parameters of AuiPanelInfo are set.

  • Direction − Top, Bottom, Left, Right, or Center
  • Position − More than one pane can be placed inside a dockable region. Each is given a position number.
  • Row − More than one pane appears in one row. Just like more than one toolbar appearing in the same row.
  • Layer − Panes can be placed in layers.

Using this PanelInfo, the designed panel is added into the manager object.

info1 = wx.aui.AuiPaneInfo().Bottom() 
self.mgr.AddPane(pnl,info1)

Rest of the top level window may have other controls as usual.

The complete code is as follows −

import wx 
import wx.aui
  
class Mywin(wx.Frame):
  
   def __init__(self, parent, title): 
      super(Mywin, self).__init__(parent, title = title, size = (300,300)) 
		
      self.mgr = wx.aui.AuiManager(self)
		
      pnl = wx.Panel(self) 
      pbox = wx.BoxSizer(wx.HORIZONTAL)
      text1 = wx.TextCtrl(pnl, -1, "Dockable", style = wx.NO_BORDER | wx.TE_MULTILINE) 
      pbox.Add(text1, 1, flag = wx.EXPAND) 
      pnl.SetSizer(pbox) 
         
      info1 = wx.aui.AuiPaneInfo().Bottom() 
      self.mgr.AddPane(pnl, info1) 
      panel = wx.Panel(self) 
      text2 = wx.TextCtrl(panel, size = (300,200), style =  wx.NO_BORDER | wx.TE_MULTILINE) 
      box = wx.BoxSizer(wx.HORIZONTAL) 
      box.Add(text2, 1, flag = wx.EXPAND) 
         
      panel.SetSizerAndFit(box) 
      self.mgr.Update() 
		
      self.Bind(wx.EVT_CLOSE, self.OnClose) 
      self.Centre() 
      self.Show(True) 
		
   def OnClose(self, event): 
      self.mgr.UnInit() 
      self.Destroy() 
		
app = wx.App()
Mywin(None,"Dock Demo")  
app.MainLoop()

The above code produces the following output −

Dock Demo

Vừa học vừa làm vừa nhận lương tại trung tâm Toidayhoc

Leave a Reply

Your email address will not be published. Required fields are marked *

Translate »