def askQuestion(self, question, answer='', cb=None,multiline=False): "As a text box based question, with optional default answer. If user confirm, call cb." t = MDTextField(text='', size_hint=(1,None),multiline=multiline,mode="rectangle") def nonsense(a): pass cb = cb or nonsense def cbr_yes(*a): print("Accept Button") cb(t.text) self.dialog.dismiss() def cbr_no(*a): cb(None) self.dialog.dismiss() self.dialog = MDDialog( type="custom", title=question, content_cls=t, buttons=[ Button( text="Accept", text_color=self.theme_cls.primary_color, on_press=cbr_yes ), Button( text="Cancel", text_color=self.theme_cls.primary_color, on_press=cbr_no ), ], ) #self.dialog.set_normal_height() t.text = answer self.dialog.open()
def add_cards(self, instance): close_button = MDFlatButton(text="Close", on_release=self.close_dialog) enter_button = MDFlatButton(text="Enter", on_release=self.add_cardname_to_db) self.grid = MDGridLayout(rows=4, size_hint_y=None, height=int(Window.height) / 8.9) self.front_input = MDTextField(size_hint=(.9, 1)) self.back_input = MDTextField(size_hint=(.9, 1)) self.dialog = MDDialog(title="Card Creation", pos_hint={ 'center_x': .5, 'center_y': .5 }, type="custom", content_cls=Content(), size_hint=(.9, 1), buttons=[close_button, enter_button]) self.grid.add_widget(MDLabel(text=" Front")) self.grid.add_widget(self.front_input) self.grid.add_widget(MDLabel(text=" Back")) self.grid.add_widget(self.back_input) self.dialog.add_widget(self.grid) self.dialog.open()
def unlock_folder_dialog(self, folderpath, outputpath, url): def close_dialog(instance, *args): instance.parent.parent.parent.parent.dismiss() layout = MDBoxLayout(orientation="vertical", adaptive_height=True) layout.add_widget( MDTextField( text= "Sudo password to change the rights of the destination folder", font_style="H6")) layout.add_widget( MDTextField(hint_text="Password", password=True, mode="rectangle")) dialog = MDDialog( title="", type='custom', auto_dismiss=False, content_cls=layout, buttons=[ MDFlatButton(text="ENTER", on_release=partial(self.unlock_folder, folderpath, outputpath, url)), MDFlatButton(text="DISCARD", on_release=close_dialog), ], ) if get_app()._platform not in ['win32', 'win64']: # TODO: Focus function seems buggy in win dialog.content_cls.focused = True dialog.open()
def download_via_url_dialog(self): def close_dialog(instance, *args): instance.parent.parent.parent.parent.dismiss() layout = MDBoxLayout(orientation="vertical", adaptive_height=True) layout.add_widget( OneLineListItem(text="Options for download via URL", font_style="H6")) layout.add_widget(OneLineListItem(text="URL to model")) layout.add_widget(MDTextField(text="", mode="rectangle")) layout.add_widget(OneLineListItem(text="Downloadpath")) layout.add_widget( MDTextField(text=self.screen.tessdatadir.text, mode="rectangle")) layout.add_widget( OneLineListItem(text="Modelname (default: filename)")) layout.add_widget(MDTextField(text="", mode="rectangle")) dialog = MDDialog( title="", type='custom', auto_dismiss=False, content_cls=layout, buttons=[ MDFlatButton(text="DOWNLOAD", on_release=partial(self.check_download_via_url)), MDFlatButton(text="DISCARD", on_release=close_dialog), ], ) if get_app()._platform not in ['win32', 'win64']: # TODO: Focus function seems buggy in win dialog.content_cls.focused = True dialog.open()
def anim_transform_button_progress(self, animation, instance, value): def set_focus(*args): self.ids.signin_button.children[-2].focus = True if value > 0.5 and not self.open_field_box: self.open_field_box = True height = 14 duration = 0.8 pos_x = 82 for name_field in ["First Name", "Last Name", "Email", "Password"]: height += 54 duration += 0.2 pos_x -= 10 field = MDTextField( x=dp(pos_x), hint_text=name_field, size_hint_x=None, y=self.ids.signin_button.height - dp(height), width=self.ids.signin_button.width - dp(72), opacity=0, ) field.color_mode = "accent" self.ids.signin_button.add_widget(field) animation = Animation(x=dp(36), opacity=1, t="out_quart", d=duration) if duration > 1.5: animation.bind(on_complete=set_focus) animation.start(field)
def load_content(self): self.layout.clear_widgets() toolbar = MDToolbar(type="top") toolbar.left_action_items = [["arrow-left", self.go_back]] toolbar.right_action_items = [["plus", self.add_book]] title_label = MDLabel( text="Title: ", halign="left", valign="top", ) subtitle_label = MDLabel( text="Subtitle: ", halign="left", valign="top", ) price_label = MDLabel( text="Price: ", halign="left", valign="top", ) self.title_input = MDTextField() self.subtitle_input = MDTextField() self.price_input = MDTextField() self.layout.add_widget(toolbar) self.layout.add_widget(title_label) self.layout.add_widget(self.title_input) self.layout.add_widget(subtitle_label) self.layout.add_widget(self.subtitle_input) self.layout.add_widget(price_label) self.layout.add_widget(self.price_input)
def addDialogRow(self, bl, title, val): #bh = self.getDialogRow() #bh.add_widget(MDLabel(text="%s:"%title)) ti = MDTextField(text=str(val), ) ti.hint_text = "%s:" % title bl.add_widget(ti) #ti = MDTextField(text = str(val)) #bh.add_widget( ti ) #bl.add_widget( bh ) return bl, ti
def __init__(self, **kwargs): super().__init__(**kwargs) self.cols = 2 self.padding = 10 if os.path.isfile("prev_details.txt"): with open("prev_details.txt", "r") as f: d = f.read().split(",") prev_ip = d[0] prev_port = d[1] prev_username = d[2] else: prev_ip = "192.168.1.9" prev_port = "1234" prev_username = "" self.add_widget(MDLabel()) self.add_widget(MDLabel()) self.add_widget(MDLabel(text="IP : ", halign="center", theme_text_color="Primary")) self.float = FloatLayout() self.ip = MDTextField(text=prev_ip, multiline=False, pos_hint={'x': 0, 'y': 0.2}) self.float.add_widget(self.ip) self.add_widget(self.float) self.add_widget(MDLabel(text="Port : ", halign="center", theme_text_color="Primary")) self.float = FloatLayout() self.port = MDTextField( text=prev_port, multiline=False, pos_hint={'x': 0, 'y': 0.2}) self.float.add_widget(self.port) self.add_widget(self.float) self.add_widget(MDLabel(text="Username : "******"center", theme_text_color="Primary")) self.float = FloatLayout() self.username = MDTextField( text=prev_username, multiline=False, pos_hint={'x': 0, 'y': 0.2}) self.float.add_widget(self.username) self.add_widget(self.float) self.float_layout = FloatLayout() self.connect_fab = MDFloatingActionButton( icon="arrow-right", pos_hint={'x': 0.68, 'y': 0}) self.connect_fab.bind(on_release=self.connect_button) self.float_layout.add_widget(self.connect_fab) self.add_widget(MDLabel()) self.add_widget(MDLabel()) self.add_widget(MDLabel()) self.add_widget(MDLabel()) self.add_widget(MDLabel()) self.add_widget(self.float_layout)
def getRowForGui(self, name): rb = MDBoxLayout(orientation='horizontal') vl = MDTextField() rb.add_widget(vl) #rb.add_widget( Label(text=" {}:".format(name) ) ) #vl = Label(text="- - -") #rb.add_widget(vl) vl.hint_text = "{}:".format(name) vl.text = "- - -" vl.disabled = True return vl, rb
def __init__(self, *args, **kwargs): super().__init__(**kwargs) self.orientation = 'vertical' self.primary_text = args[0] self.secondary_text = args[1] self.size_hint_y = None self.height = 100 self.primary_text_field = MDTextField(text=self.primary_text, ) self.secondary_text_field = MDTextField(text=self.secondary_text, ) self.add_widget(self.primary_text_field) self.add_widget(self.secondary_text_field) if len(args) > 2: self.tertiary_text = args[2] self.tertiary_text_field = MDTextField(text=self.tertiary_text, ) self.add_widget(self.tertiary_text_field)
def on_text(self, instance_field: MDTextField, text: str) -> NoReturn: if text != "" and not text.isspace() and not self._backspace: if len(text) <= 1 and instance_field.focus: instance_field.text = text self._set_pos_cursor() elif len(text) == 3: start = instance_field.text[:-1] end = instance_field.text[-1] instance_field.text = f"{start}/{end}" self._set_pos_cursor() elif len(text) == 5: instance_field.text += "/" self._set_pos_cursor() if not self.owner.min_date and not self.owner.max_date: self.owner.update_text_full_date(self._get_list_date())
def goto_folder_dialog(self, *args): def close_dialog(instance, *args): instance.parent.parent.parent.parent.dismiss() if self.file_chooser.multiselect == True: self.update_filechooser_multiselect() sellist = MDList() for sel in self.file_chooser.selection: sellist.add_widget(OneLineListItem(text=sel)) dialog = MDDialog(title="Please insert the desired folderpath", type='custom', auto_dismiss=False, content_cls=MDTextField(text=''), buttons=[ MDFlatButton( text="GO TO FOLDER", on_release=self.goto_folder ), MDFlatButton( text="DISCARD", on_release=close_dialog ), ], ) if get_app()._platform not in ['win32', 'win64']: # TODO: Focus function seems buggy in win dialog.content_cls.focused = True dialog.open()
def __init__(self, **kwargs): super(CaptchaScreen, self).__init__(**kwargs) self.buttonPressed = False self.captcha = Image() self.captcha.size_hint = [0.25, 0.25] self.captcha.pos_hint = {"center_x": 0.5, "center_y": 0.8} self.keyInput = MDTextField() self.keyInput.required = True self.keyInput.helper_text_mode = "on_error" self.keyInput.helper_text = "Введите код подтверждения входа" self.keyInput.hint_text = "Код подтверждения входа" self.keyInput.pos_hint = {"center_x": 0.5, "center_y": blockStart} self.keyInput.size_hint_x = 0.8 self.enterButton = MDRaisedButton() self.enterButton.text = "Войти" self.enterButton.pos_hint = { "center_x": 0.5, "center_y": blockStart - 0.20 } self.enterButton.md_bg_color = [0, 0.75, 0.30, 1] self.enterButton.size_hint = [0.75, 0.08] self.enterButton.font_size = 17 self.add_widget(self.captcha) self.add_widget(self.keyInput) self.add_widget(self.enterButton)
def __init__(self, **kwargs): super().__init__(orientation='vertical', **kwargs) self.history = [] # directory navigation history # If False - do not add a directory to the history - # The user moves down the tree. self.history_flag = True toolbar_label = self.ids.toolbar.children[1].children[0] toolbar_label.font_style = "Subtitle1" self.app = App.get_running_app() from kivymd.uix.button import MDFillRoundFlatButton as Button, MDRoundFlatButton if self.save_mode: action_button = MDRoundFlatButton( text="Save", size_hint=(1,None) ) action_button.bind(on_release=self.select_directory_on_press_button) self.add_widget(action_button) from kivymd.uix.textfield import MDTextFieldRect,MDTextField self.saveFileName = MDTextField(text=str(self.save_mode),mode='fill', multiline=False,font_size='22sp',size_hint=(1,None)) self.add_widget(self.saveFileName)
def build(self): screen=MDScreen() # username=MDTextField(text='Enter username', pos_hint={'center_x':0.5,'center_y':0.5},size_hint=(0.5,1)) username=MDTextField(text='Enter username', pos_hint={'center_x':0.5,'center_y':0.5},size_hint_x=None,width=300) screen.add_widget(username) return screen
def overwrite_existing_file_dialog(self, overwrite_func, outputpath): def close_dialog(instance, *args): instance.parent.parent.parent.parent.dismiss() layout = MDBoxLayout(orientation="vertical", adaptive_height=True) layout.add_widget( OneLineListItem(text="Overwrite existing destination file?", font_style="H6")) layout.add_widget( MDTextField(text=str(outputpath.absolute()), multiline=True, readonly=True, mode="rectangle")) dialog = MDDialog( title="", type='custom', auto_dismiss=False, content_cls=layout, buttons=[ MDFlatButton(text="OVERWRITE", on_release=partial(overwrite_func, outputpath)), MDFlatButton(text="DISCARD", on_release=close_dialog), ], ) if get_app()._platform not in ['win32', 'win64']: # TODO: Focus function seems buggy in win dialog.content_cls.focused = True dialog.open()
def show_edit_dialog(self, num): self.num = num self.dialog = None if not self.dialog: cls = BoxLayout(orientation="vertical", spacing="12dp", size_hint_y=None, height="120dp") cls.add_widget( MDLabel( text=self.INTERFACE.ids[f'raisedBtn{self.num-1}'].text)) self.personne = MDTextField( text=self.INTERFACE.ids[f'raisedBtn{self.num}'].text, ) self.dialog = MDDialog( title="Grand Menage:", type="custom", content_cls=cls, buttons=[ MDFlatButton(text="ANNULER", text_color=self.theme_cls.primary_color, on_press=self.close_edit_Dialog), MDFlatButton(text="OK", text_color=self.theme_cls.primary_color, on_press=self.close_edit_Dialog), ], ) cls.add_widget(self.personne) self.dialog.open()
def _verify_dialog(self): content_cls = BoxLayout() content_cls.add_widget(MDTextField( hint_text=self.tr( 'alpha' ).capitalize() + ' ' + self.tr( 'password' ).lower() )) alert_dialog = MDDialog( title=self.tr('confirm_alpha'), type='custom', auto_dismiss=False, content_cls=content_cls, buttons=[ MDFillRoundFlatIconButton( text=self.tr('ok'), on_release=lambda x: [ alert_dialog.dismiss(), self.set_confirm( alert_dialog.content_cls.children[0].text ), self._confirm_done() ] ), MDRoundFlatIconButton( text=self.tr('cancel'), on_release=lambda x: [ alert_dialog.dismiss() ] ) ] ) return alert_dialog
def on_enter(self, *args): globals() self.ids.staff_name.text = StaffName self.ids.class_name.text = CLASS self.ids.subject_name.text = SUBJECT self.ids.date_name.text = DATE self.ids.time_name.text = TIME query = "SELECT cs_code FROM staff_class where sid=%s AND class=%s AND subject=%s" val = (StaffID, CLASS, SUBJECT) tmp_cursor.execute(query, val) self.code = tmp_cursor.fetchone()[0] query = "SELECT roll_no FROM student_class WHERE cs_code=%s" val = (self.code, ) tmp_cursor.execute(query, val) self.roll_nos = [] self.roll_nos_dict = {} for x in tmp_cursor.fetchall(): self.roll_nos.append(x[0]) bl = BoxLayout(orientation='horizontal', size_hint=(1, None), height=Window.height * 0.07) label = MDLabel(text=x[0], halign='center') cb1 = MDCheckbox(group=x[0], active=True) cb2 = MDCheckbox(group=x[0]) tb = MDTextField() self.roll_nos_dict[x[0]] = [cb1, tb] bl.add_widget(label) bl.add_widget(cb1) bl.add_widget(cb2) bl.add_widget(tb) self.ids.list_of_students.add_widget(bl)
def make_list(self): obj = self.ids.student_list if len(self.ids.std_cnt.text) > 0: for i in range(0, int(self.ids.std_cnt.text)): item = MDTextField(mode='rectangle') self.roll_objs.append(item) obj.add_widget(item)
def remove_jobdata_dialog(self, *args): def close_dialog(instance, *args): instance.parent.parent.parent.parent.dismiss() layout = MDBoxLayout(orientation="vertical", adaptive_height=True) layout.add_widget( OneLineListItem(text="You really want to delete these jobs?", font_style="H6")) layout.add_widget( MDTextField(text=" / ".join( set([job[0] for job in self.job_table.get_row_checks()])), multiline=True, readonly=True, mode="rectangle")) dialog = MDDialog( title="Remove jobdata from server", type='custom', auto_dismiss=False, content_cls=layout, buttons=[ MDFlatButton(text="DELETE", on_release=partial(self.remove_jobdata)), MDFlatButton(text="DISCARD", on_release=close_dialog), ], ) if get_app()._platform not in ['win32', 'win64']: dialog.content_cls.focused = True dialog.open()
def show_data(self, obj): close_button = MDRectangleFlatButton(text="Add", pos_hint={ "center_x": 0.5, "center_y": 0.4 }, on_press=self.close_dialog, on_release=self.print_something) self.alreadyCheck = False self.foodItem = MDTextField( hint_text="Enter an item", helper_text="e.g. apples, bananas, orange, etc.", helper_text_mode="on_focus", # icon_right_color = app.theme_cls.primary_color, pos_hint={ "center_x": 0.5, "center_y": 0.5 }, size_hint_x=None, width=500) self.dialog = MDDialog(title="Enter an item:", size_hint=(0.7, 1), buttons=[close_button]) self.dialog.add_widget(self.foodItem) self.dialog.open()
def __init__(self, **kwargs): super(AuthScreen, self).__init__(**kwargs) self.vkLogo = Image(source="assets/vk_logo.png") self.vkLogo.size_hint = [0.25, 0.25] self.vkLogo.pos_hint = {"center_x": 0.5, "center_y": 0.8} self.loginInput = MDTextField() self.passInput = MDTextField() self.passInput.password = True self.passInput.required = True self.loginInput.required = True self.loginInput.helper_text_mode = "on_error" self.loginInput.helper_text = "Введите номер телефона или email" self.passInput.helper_text_mode = "on_error" self.passInput.helper_text = "Введите пароль" self.loginInput.hint_text = "Телефон или email" self.passInput.hint_text = "Пароль" self.loginInput.pos_hint = {"center_x": 0.5, "center_y": blockStart} self.passInput.pos_hint = { "center_x": 0.5, "center_y": blockStart - 0.07 } self.loginInput.size_hint_x = 0.8 self.passInput.size_hint_x = 0.8 self.enterButton = MDRaisedButton() self.enterButton.text = "Войти" self.enterButton.pos_hint = { "center_x": 0.5, "center_y": blockStart - 0.20 } self.enterButton.md_bg_color = [0, 0.75, 0.30, 1] self.enterButton.size_hint = [0.75, 0.08] self.enterButton.font_size = 17 self.add_widget(self.vkLogo) self.add_widget(self.loginInput) self.add_widget(self.passInput) self.add_widget(self.enterButton)
def __init__(self, form_attrs, **kwargs): super(Form, self).__init__(**kwargs) self.cols = 1 self.form = MDGridLayout() self.form.cols = 2 self.form_attrs = form_attrs self.text_inputs = {} self.search_btn = {} for key, value in form_attrs.items(): if key == 'form_name': self.form_name = form_attrs[key] elif key in ['product_id', 'provider_id']: self.form.add_widget(MDLabel(text=value[0] + ':')) self.text_inputs[key] = MDTextField( multiline=False, text='' if 'date' not in key else datetime.now().strftime('%Y-%m-%d %H:%M:%S')) self.search_btn[key] = MDRectangleFlatButton(text='Buscar ' + value[0], size_hint_x=None, font_size=10) self.search_btn[key].bind(on_release=self.search) search_lo = MDGridLayout() search_lo.cols = 2 search_lo.add_widget(self.text_inputs[key]) search_lo.add_widget(self.search_btn[key]) self.form.add_widget(search_lo) else: self.form.add_widget(MDLabel(text=value[0] + ':')) self.text_inputs[key] = MDTextField( multiline=False, text='' if 'date' not in key else datetime.now().strftime('%Y-%m-%d %H:%M:%S')) self.form.add_widget(self.text_inputs[key]) self.add_widget(self.form) self.submit = MDRectangleFlatButton(text='Crear', font_size=40, pos_hint={ 'center_x': 0.5, 'center_y': 0.1 }, size_hint_x=None) self.submit.bind(on_release=self.submit_form) self.add_widget(self.submit)
def __init__(self, Mlist, *args, **kwargs): super().__init__(*args, **kwargs) self.title = f"New Material" self.Mlist = Mlist self.size_hint = (0.6, 0.7) app = MDApp.get_running_app() vlayout = BoxLayout() vlayout.orientation = "vertical" # name namerow = BoxLayout(size_hint=(1, 0.25)) namerow.orientation = "horizontal" namerow.add_widget(Label(text="Material name: ")) self.name_widget = MDTextField() namerow.add_widget(self.name_widget) #cost costrow = BoxLayout(size_hint=(1, 0.25)) costrow.orientation = "horizontal" costrow.add_widget(Label(text="Cost: ")) self.cost_widget = MDTextField(color_mode='accent', line_color_normal=app.theme_cls.accent_color) costrow.add_widget(self.cost_widget) # quantity quantityrow = BoxLayout(size_hint=(1, 0.25)) quantityrow.orientation = "horizontal" quantityrow.add_widget(Label(text="Quantity: ")) self.quantity_widget = MDTextField(color_mode='accent', line_color_normal=app.theme_cls.accent_color) quantityrow.add_widget(self.quantity_widget) # supplier supplierrow = BoxLayout(size_hint=(1, 0.25)) supplierrow.orientation = "horizontal" supplierrow.add_widget(Label(text="Supplier: ")) self.supplier_widget = MDTextField(color_mode='accent', line_color_normal=app.theme_cls.accent_color) supplierrow.add_widget(self.supplier_widget) vlayout.add_widget(namerow) vlayout.add_widget(costrow) vlayout.add_widget(quantityrow) vlayout.add_widget(supplierrow) buttonlayout = BoxLayout() buttonlayout.orientation = "horizontal" buttonlayout.add_widget(MDRectangleFlatButton(text="Discard", on_release=self.dismiss)) buttonlayout.add_widget(MDRectangleFlatButton(text="Save", on_release=self.save)) vlayout.add_widget(buttonlayout) self.content = vlayout
def paye_cotisation(self): self.dialog = None if not self.dialog: cls = BoxLayout(orientation="vertical", spacing="12dp", size_hint_y=None, height="300dp") ###Reason of the payement cls.add_widget(MDLabel(text="Motifs")) self.motifs_paye = MDTextField() cls.add_widget(self.motifs_paye) ###Who did the payement cls.add_widget(MDLabel(text="Prenom")) self.who_paye = MDTextField() cls.add_widget(self.who_paye) ###Amount of the payement cls.add_widget(MDLabel(text="Montant")) self.argent_paye = MDTextField() cls.add_widget(self.argent_paye) ###The date of the transaction cls.add_widget(MDLabel(text="Date de payement")) self.date_paye = MDTextField() cls.add_widget(self.date_paye) self.dialog = MDDialog( title="Payement de cotisation:", type="custom", content_cls=cls, buttons=[ MDFlatButton(text="ANNULER", text_color=self.theme_cls.primary_color, on_press=self.close_paye_Dialog), MDFlatButton(text="OK", text_color=self.theme_cls.primary_color, on_press=self.close_paye_Dialog), ], ) self.dialog.open()
def add_student(self): if self.flag == 1: self.flag = 0 else: return self.textbox = MDTextField(pos_hint={'center_y': 0.055}) self.button = MDFlatButton(text='ADD', pos_hint={'center_y': 0.055}) self.button.bind(on_press=self.add) self.ids.bottom_box.add_widget(self.textbox) self.ids.bottom_box.add_widget(self.button)
def __init__(self, **kwargs): super(LoginScreen, self).__init__(**kwargs) self.card = MDCard() self.card.text = "Valida" self.box = BoxLayout() self.box.orientation = 'vertical' self.card.add_widget(self.box) self.button_login = MDRaisedButton(text="Login") self.input_senha = MDTextField(password=True) self.button_login.bind(on_press=self.request) self.card.padding = "20dp" self.input_email = MDTextField() self.input_email.hint_text = "E-mail" self.input_senha.hint_text = "Senha" self.box.add_widget(self.input_email) self.box.add_widget(self.input_senha) self.box.add_widget(self.button_login) self.add_widget(self.card)
def delete_card(self, instance): close_button = MDFlatButton(text="Close", on_release=self.close_dialog) delete_dialog_button = MDFlatButton(text="Delete", on_release=self.delete_card_input) self.dialog = MDDialog(title="Delete Card", size_hint=(0.7, 1), buttons=[close_button, delete_dialog_button]) self.input = MDTextField() self.dialog.add_widget(self.input) self.dialog.open()
def edit(self, *args): layout = MDBoxLayout(orientation='vertical', spacing='12dp', size_hint_y=None, height="120dp") self.reg = MDTextField() self.issue = MDTextField(multiline=True) layout.add_widget(self.reg) layout.add_widget(self.issue) self.dialog = MDDialog( title="Edit", type='custom', content_cls=layout, buttons=[ MDFlatButton(text='Save', on_press=self.save), MDFlatButton(text='Delete', on_press=self.delete_prompter), MDFlatButton(text='Cancel', on_press=self.close), ], ) self.dialog.set_normal_height() self.dialog.open()