Форум сайта python.su
0
Всем привет! Я в программировании совсем новичок и прошу помощи в решении следующий задачи. Программа пишется на IronPython. Задача по созданию фильтра: Необходимо создать форму на которой будет Combox cо списком параметров(Вклад, Тип клиента и Дата оформления), данный список должен быть связан с кнопкой Добавить. При нажатии на кнопку, должны на этой же форме генерироваться дополнительные элементы, которые дополняют иформацию о параметрах из списка ( например, выбираем из списка параметр Вклад, нажимаем кнопку Добавить, и тогда ниже на форме появляется Вклад(простой label), Combox, в котором можно выбрать следующие операции(=,Не заполнено, Заполнено), ещё один Combox, где перечислены возможные виды вклада( Оптимальный, Простой) и кнопка Удалить, чтобы можно было убрать все появившиеся элементы. И такие действия должны работать для любого параметра из списка Combox, который связан с кнопкой Добавить. Я создала форму, на ней рисуется первый Combox и кнопка Добавить, также в сам Combox добавила список нужных параметров. Но как сделать, чтобы при выборе одного из параметров списка и нажатии на кнопку строились другие элементы не понимаю(((( Вот код, который есть у меня сейчас.
import System.Drawing
import System.Windows.Forms
from System.Drawing import *
from System.Windows.Forms import *
from misc import ShowMessage
from commands import CCommand
from CFU.Classes.add_filter_controller import AddFilterController
class frameFormAddFilter(Form):
def __init__(self):
self.controller = AddFilterController(self)
self.InitializeComponent()
def InitializeComponent(self):
self._Add = System.Windows.Forms.Button()
self._Save = System.Windows.Forms.Button()
self._Cancel = System.Windows.Forms.Button()
self._ComboBox = System.Windows.Forms.ComboBox()
self.SuspendLayout()
#
# Add
#
self._Add.Location = System.Drawing.Point(345, 18)
self._Add.Name = “Add”
self._Add.Size = System.Drawing.Size(75, 23)
self._Add.TabIndex = 1
self._Add.Text = “Добавить”
self._Add.UseVisualStyleBackColor = True
self._Add.Click += self.add_click_handler
#
# Save
#
self._Save.Location = System.Drawing.Point(345, 204)
self._Save.Name = “Save”
self._Save.Size = System.Drawing.Size(77, 31)
self._Save.TabIndex = 2
self._Save.Text = “Сохранить”
self._Save.UseVisualStyleBackColor = True
#
# Cancel
#
self._Cancel.DialogResult = System.Windows.Forms.DialogResult.Cancel
self._Cancel.Location = System.Drawing.Point(428, 204)
self._Cancel.Name = “Cancel”
self._Cancel.Size = System.Drawing.Size(71, 31)
self._Cancel.TabIndex = 3
self._Cancel.Text = “Отменить”
self._Cancel.UseVisualStyleBackColor = True
#
# ComboBox
#
self._ComboBox.FormattingEnabled = True
self._ComboBox.Location = System.Drawing.Point(77, 20)
self._ComboBox.Name = “ComboBox”
self._record_type.BeginUpdate()
self.form._ComboBox.Items.Add(“Тип клиента”)
self.form._ComboBox.Items.Add(“Дата”)
self.form._ComboBox.Items.Add(“Вклад”)
self._ComboBox.Size = System.Drawing.Size(235, 21)
self._ComboBox.SelectedIndex= 4
self._record_type.EndUpdate()
#
# frameFormAddFilter
#
self.AcceptButton = self._Save
self.CancelButton = self._Cancel
self.ClientSize = System.Drawing.Size(502, 247)
self.Controls.Add(self._ComboBox)
self.Controls.Add(self._Cancel)
self.Controls.Add(self._Save)
self.Controls.Add(self._Add)
self.Name = “frameFormAddFilter”
self.Text = “Добавление фильтра”
self.Load += self.form_load_handler
self.ResumeLayout(False)
self.PerformLayout()
def form_load_handler(self, sender, e):
self.controller.form_load_handler(sender, e)
# def save_button_click_handler(self, sender, e):
# ShowMessage(“okw”)
#
def add_click_handler(self, sender, e):
pass
Офлайн
0
Приложила еще рисунок, как должна выглядеть форма при нажатии на кнопку Добавить несколько раз при выборе разных параметров из списка ComboBox.
Прикреплённый файлы:
форма.bmp (444,9 KБ)
Офлайн
61
Зайузайте ТЕГ кода - нечитабельно !
Офлайн
0
# -*- coding: utf-8 -*- import System.Drawing import System.Windows.Forms from System.Drawing import * from System.Windows.Forms import * from misc import ShowMessage from commands import CCommand class frameFormAddFilter(Form): def __init__(self): self.InitializeComponent() def InitializeComponent(self): self._Add = System.Windows.Forms.Button() self._Save = System.Windows.Forms.Button() self._Cancel = System.Windows.Forms.Button() self._ComboBox = System.Windows.Forms.ComboBox() self.SuspendLayout() # # Add # self._Add.Location = System.Drawing.Point(345, 18) self._Add.Name = "Add" self._Add.Size = System.Drawing.Size(75, 23) self._Add.TabIndex = 1 self._Add.Text = "Добавить" self._Add.UseVisualStyleBackColor = True self._Add.Click += self.add_click_handler # # Save # self._Save.Location = System.Drawing.Point(345, 204) self._Save.Name = "Save" self._Save.Size = System.Drawing.Size(77, 31) self._Save.TabIndex = 2 self._Save.Text = "Сохранить" self._Save.UseVisualStyleBackColor = True # # Cancel # self._Cancel.DialogResult = System.Windows.Forms.DialogResult.Cancel self._Cancel.Location = System.Drawing.Point(428, 204) self._Cancel.Name = "Cancel" self._Cancel.Size = System.Drawing.Size(71, 31) self._Cancel.TabIndex = 3 self._Cancel.Text = "Отменить" self._Cancel.UseVisualStyleBackColor = True # # ComboBox # self._ComboBox.FormattingEnabled = True self._ComboBox.Location = System.Drawing.Point(77, 20) self._ComboBox.Name = "ComboBox" self._ComboBox.Size = System.Drawing.Size(235, 21) self._ComboBox.TabIndex = 4 # # frameFormAddFilter # self.AcceptButton = self._Save self.CancelButton = self._Cancel self.ClientSize = System.Drawing.Size(502, 247) self.Controls.Add(self._ComboBox) self.Controls.Add(self._Cancel) self.Controls.Add(self._Save) self.Controls.Add(self._Add) self.Name = "frameFormAddFilter" self.Text = "Добавление гибкого фильтра" self.Load += self.form_load_handler self.ResumeLayout(False) self.PerformLayout() def form_load_handler(self, sender, e): self.form._ComboBox.Items.Add("Тип клиента") self.form._ComboBox.Items.Add("Дата") self.form._ComboBox.Items.Add("Вклад") def add_click_handler(self, sender, e): pass
Офлайн
0
Разработка идёт в sharpdevelop 4.4.
Офлайн
88
Создайте все заранее и только управляйте видимостью.
Офлайн