Как делают меня расположение 3 окна области с помощью wxPython?

Когда дело доходит до работы с JSON и такими моделями, как в вашем примере «Тест», лучше всего использовать библиотеку, которая эффективно сериализует объекты в JSON. Я считаю, что Джексон, вероятно, одна из самых простых библиотек для использования с большим количеством ресурсов. Вы также можете использовать библиотеки Google Gson в качестве альтернативы.

Пример

pom.xml

    
        com.fasterxml.jackson.core
        jackson-databind
    

Service.class

HttpHeaders httpHeaders = < put headers here >
HttpEntity entity = new HttpEntity<>(edpPartnerBean, httpHeaders);

// Will automatically use the Jackson serialization
ResponseEntity response = restTemplate.exchange(url, HttpMethod.POST, entity, Test.class);

Test.class

package x;

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;


public class Test {

    private Boolean success;
    private String errorMessage;
    private String exceptionMessage;
    private String confirmation;
    private InputStream attachment;

    @JsonCreator
    public Test(@JsonProperty("success") Boolean success,
                @JsonProperty("errorMessage") String errorMessage,
                @JsonProperty("exceptionMessage") String exceptionMessage,
                @JsonProperty("confirmation") String confirmation,
                @JsonProperty("attachment") InputStream attachment) {
        this.setSuccess(success);
        this.setErrorMessage(errorMessage);
        this.setExceptionMessage(exceptionMessage);
        this.setConfirmation(confirmation);
        this.setAttachment(attachment);
    }

    public Boolean getSuccess() {
        return success;
    }

    public void setSuccess(Boolean success) {
        this.success = success;
    }

    public String getErrorMessage() {
        return errorMessage;
    }

    public void setErrorMessage(String errorMessage) {
        this.errorMessage = errorMessage;
    }

    public String getExceptionMessage() {
        return exceptionMessage;
    }

    public void setExceptionMessage(String exceptionMessage) {
        this.exceptionMessage = exceptionMessage;
    }

    public String getConfirmation() {
        return confirmation;
    }

    public void setConfirmation(String confirmation) {
        this.confirmation = confirmation;
    }

    public InputStream getAttachment() {
        return attachment;
    }

    public void setAttachment(InputStream attachment) {
        this.attachment = attachment;
    }
}

Обратите внимание на использование JsonCreator и JsonProperty.

Документация: https://github.com/FasterXML/jackson-docs

5
задан andy47 7 February 2009 в 07:12
поделиться

4 ответа

В первую очередь, загрузите wxGlade gui разработчик для wxPython (альтернативный XRCed, я предварительный друг wxGlade).

Затем необходимо решить, хотите ли Вы использовать GridSizer или Разделитель, и Вы сделаны. Ниже Вас находят и (между Древовидной и правой стороной, GridSizer->, изменяет размер автоматически). Между Редактированием и GridCtrl Классификатор (руководство Изменяют размер).

С уважением.

одна мелкая работа, не вводя одну строку кода:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# generated by wxGlade 0.6.3 on Sat Feb 07 10:02:31 2009

import wx
import wx.grid

# begin wxGlade: extracode
# end wxGlade



class MyDialog(wx.Dialog):
    def __init__(self, *args, **kwds):
        # begin wxGlade: MyDialog.__init__
        kwds["style"] = wx.DEFAULT_DIALOG_STYLE|wx.RESIZE_BORDER|wx.THICK_FRAME
        wx.Dialog.__init__(self, *args, **kwds)
        self.window_1 = wx.SplitterWindow(self, -1, style=wx.SP_3D|wx.SP_BORDER)
        self.tree_ctrl_1 = wx.TreeCtrl(self, -1, style=wx.TR_HAS_BUTTONS|wx.TR_LINES_AT_ROOT|wx.TR_DEFAULT_STYLE|wx.SUNKEN_BORDER)
        self.text_ctrl_1 = wx.TextCtrl(self.window_1, -1, "This is the Edit", style=wx.TE_MULTILINE)
        self.grid_1 = wx.grid.Grid(self.window_1, -1, size=(1, 1))

        self.__set_properties()
        self.__do_layout()
        # end wxGlade

    def __set_properties(self):
        # begin wxGlade: MyDialog.__set_properties
        self.SetTitle("dialog_1")
        self.grid_1.CreateGrid(10, 3)
        # end wxGlade

    def __do_layout(self):
        # begin wxGlade: MyDialog.__do_layout
        grid_sizer_1 = wx.FlexGridSizer(1, 2, 3, 3)
        grid_sizer_1.Add(self.tree_ctrl_1, 1, wx.EXPAND, 0)
        self.window_1.SplitHorizontally(self.text_ctrl_1, self.grid_1)
        grid_sizer_1.Add(self.window_1, 1, wx.EXPAND, 0)
        self.SetSizer(grid_sizer_1)
        grid_sizer_1.Fit(self)
        grid_sizer_1.AddGrowableRow(0)
        grid_sizer_1.AddGrowableCol(0)
        grid_sizer_1.AddGrowableCol(1)
        self.Layout()
        # end wxGlade

# end of class MyDialog


class MyApp(wx.App):
    def OnInit(self):
        wx.InitAllImageHandlers()
        mainDlg = MyDialog(None, -1, "")
        self.SetTopWindow(mainDlg)
        mainDlg.Show()
        return 1

# end of class MyApp

if __name__ == "__main__":
    app = MyApp(0)
    app.MainLoop()
7
ответ дан 18 December 2019 в 08:31
поделиться

Необходимо использовать wxSplitter, вот пример. Другой здесь. И другой.

3
ответ дан 18 December 2019 в 08:31
поделиться

Это - очень простой макет с помощью wx.aui и три панели. Я предполагаю, что можно легко адаптировать его для удовлетворения потребностям.

Orjanp...

import wx
import wx.aui

class MyFrame(wx.Frame):
    def __init__(self, *args, **kwargs):
        wx.Frame.__init__(self, *args, **kwargs)

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

        leftpanel = wx.Panel(self, -1, size = (200, 150))
        rightpanel = wx.Panel(self, -1, size = (200, 150))
        bottompanel = wx.Panel(self, -1, size = (200, 150))

        self.mgr.AddPane(leftpanel, wx.aui.AuiPaneInfo().Bottom())
        self.mgr.AddPane(rightpanel, wx.aui.AuiPaneInfo().Left().Layer(1))
        self.mgr.AddPane(bottompanel, wx.aui.AuiPaneInfo().Center().Layer(2))

        self.mgr.Update()


class MyApp(wx.App):
    def OnInit(self):
        frame = MyFrame(None, -1, '07_wxaui.py')
        frame.Show()
        self.SetTopWindow(frame)
        return 1

if __name__ == "__main__":
    app = MyApp(0)
    app.MainLoop()
7
ответ дан 18 December 2019 в 08:31
поделиться

Вы могли рассмотреть использование wx.aui модуля расширенного интерфейса пользователя, поскольку он позволяет Вам создавать UIs как это очень легко. Также пользователь может затем минимизировать, максимизировать и перетащить области вокруг, как они считают целесообразным, или нет. Это довольно гибко. Я на самом деле нахожу легче разметить этот вид UI с aui инструментарием, а не с сетками и разделителями. Плюс все необычные кнопки заставляют приложения выглядеть более прохладными.:)

Существует хороший пример в официальных демонстрациях, названных AUI_DockingWindowMgr.

2
ответ дан 18 December 2019 в 08:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: