Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Python 3 Gtk+ 3 Как добавить новый элемент на основную форму из модального окна?  (Прочитано 919 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ivsatel

  • Автор темы
  • Активист
  • *
  • Сообщений: 336
    • Просмотр профиля
Вот код:
Код: (python) [Выделить]
from gi.repository import Gtk
import configparser
import os

class XWindow(Gtk.Window):

    def __init__(self):
        print('Create window #-1')
        Gtk.Window.__init__(self, title="Button Demo")
        self.set_border_width(10)
        self.set_default_size(300, 150)
       
        self.notebook = Gtk.Notebook()
        self.main_grid = Gtk.Grid()
       
        self.loc_config = configparser.ConfigParser(delimiters=('='), allow_no_value=True, strict=False)
        self.loc_config.read(os.path.dirname(os.path.realpath(__file__))+'/r_net.txt')
        self.c_s = self.loc_config.sections()
       
        self.m_label = Gtk.Label('Static')
       
        if len(self.c_s) == 0:
            self.but = Gtk.Button('OK')
            self.but.connect('clicked', self.x_mod_win)
            self.main_grid.attach(self.but, 1, 1, 5, 1)
           
       
        self.main_grid.attach(self.m_label, 1, 2, 5, 1)
        self.notebook.append_page(self.main_grid, Gtk.Label('№ - 1'))
        self.add(self.notebook)
   
    def x_mod_win(self, button):
        def ex_t(window, event):
            win.destroy()
       
        self.but.destroy()
       
        self.new_label = Gtk.Label('New Label')
        self.main_grid.attach(self.new_label, 1, 1, 5, 1)
       
        win = Gtk.Window(default_height=50, default_width=300)
        win.set_modal(True)
        win.set_transient_for(self)
        win.connect("delete-event", ex_t)
        win.show_all()

win = XWindow()
win.connect("delete-event", Gtk.main_quit)
win.show_all()
Gtk.main()
Как реализовать такую последовательность действий:
1-появление модального окна
2-удаление элемента в родительском окне
3-создание нового элемента в родительском окне
4-закрытие модального окна
« Последнее редактирование: 05 Марта 2015, 22:40:19 от ivsatel »

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
ivsatel, у окна должно быть свойство modal. Установи его в true.
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн RingOV

  • Активист
  • *
  • Сообщений: 764
    • Просмотр профиля
ivsatel,
Как реализовать такую последовательность действий, если она уже реализована? :)
Непонятно, что нужно.

Если смущает, что новый элемент не видно, так его надо показать:
Код: (python) [Выделить]
self.new_label.show()

Оффлайн ivsatel

  • Автор темы
  • Активист
  • *
  • Сообщений: 336
    • Просмотр профиля
RingOV,
Если смущает, что новый элемент не видно, так его надо показать:
Код: (python) [Выделить]
self.new_label.show()
Да, это то, что я искал. Я только стал добавлять
Код: (python) [Выделить]
self.show_all()И элемент прорисовывается. В начале хотелось это реализовать через события/сигналы. Но так действительно проще.
RingOV, Спасибо!

 

Страница сгенерирована за 0.015 секунд. Запросов: 21.