В сущности, разветвление означает превращение точной копии текущего процесса в другой процесс вплоть до разветвления (верно? Это так, как я понял, пожалуйста, исправьте меня, если я ошибаюсь)
Итак, если в графическом интерфейсе я добавлю код к кнопке произнесения, которая разветвляет процесс для открытия браузера, разве это не превращает мое текущее окно графического интерфейса в два окна графического интерфейса? Но результат только один. Под двумя окнами с графическим интерфейсом я имею в виду, что если он копирует процесс до момента разветвления, то не должен ли он также создать дублирующее окно, поскольку скопировал весь код?
Минимальный исполняемый код находится здесь:
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. Что это за теория?