разветвление в GUI-нуждается в разъяснении теории - PullRequest
0 голосов
/ 01 мая 2018

В сущности, разветвление означает превращение точной копии текущего процесса в другой процесс вплоть до разветвления (верно? Это так, как я понял, пожалуйста, исправьте меня, если я ошибаюсь)

Итак, если в графическом интерфейсе я добавлю код к кнопке произнесения, которая разветвляет процесс для открытия браузера, разве это не превращает мое текущее окно графического интерфейса в два окна графического интерфейса? Но результат только один. Под двумя окнами с графическим интерфейсом я имею в виду, что если он копирует процесс до момента разветвления, то не должен ли он также создать дублирующее окно, поскольку скопировал весь код?

Минимальный исполняемый код находится здесь:

from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
import webbrowser, os

class something(BoxLayout):
    def __init__(self):
        super().__init__()
        self.add_widget(Button(text='test button'))
        self.add_widget(Label(text='[ref=video]google.com[/ref]',
                    markup=True,
                    on_ref_press=lambda *_: self.open_browser('https://google.com')))

    def open_browser(self, site):

        if not os.fork():
            webbrowser.open(site)






class MainApp(App):
    def build(self):
        return something()


if __name__ == '__main__':
    MainApp().run()  

По какой-то причине GUI перестает отвечать на запросы после выполнения форка, и после того, как разветвление выполнено, нет двух окон GUI. Что это за теория?

...