DearPyGui
DearPyGui copied to clipboard
Can `set_primary_window` use `horizontal_scrollbar` feature normally?
Just copy can paste code below can reproduce the issue.
horizontal_scrollbar=True
but horizontal_scrollbar
cannot show in screenshot below.
Code to reproduce the issue
import os
from json import *
from re import *
import argparse
import dearpygui.dearpygui as dpg
from win32api import GetSystemMetrics
xxxxx=GetSystemMetrics (0)
yyyyy=GetSystemMetrics (1)
def global_theme():
with dpg.theme(tag="theme_id_global"):
with dpg.theme_component():
dpg.add_theme_color(dpg.mvThemeCol_Button, (102,102,153), category=dpg.mvThemeCat_Core)
dpg.add_theme_style(dpg.mvStyleVar_FrameRounding, 5, category=dpg.mvThemeCat_Core)
dpg.add_theme_style(dpg.mvStyleVar_ButtonTextAlign, 0.00, category=dpg.mvThemeCat_Core)
dpg.add_theme_style(dpg.mvStyleVar_ScrollbarSize, 30, category=dpg.mvThemeCat_Core)
def START():
dpg.create_context()
dpg.create_viewport(width=xxxxx//2,height=yyyyy//10,title='213',vsync=False)#
def END():
# dpg.create_viewport(title='Custom Title', width=xxxxx-100,height=yyyyy-100)
dpg.set_primary_window("MAIN_WINDOW",value=True)
dpg.setup_dearpygui()
dpg.show_viewport()
dpg.start_dearpygui()
dpg.destroy_context()
class DPG_SCROLL(object):
def __init__(self):
self.p=""
def func(self):
START()
with dpg.window(label="MAIN_WINDOW",no_resize=True,no_move = True, width=xxxxx*0.8, height=yyyyy*0.6,tag="MAIN_WINDOW",horizontal_scrollbar=True,no_scrollbar=False):
dpg.add_text("horizontal_scrollbar cannot show in after use set_primary_window function...........horizontal_scrollbar cannot show in after use set_primary_window function...........horizontal_scrollbar cannot show in after use set_primary_window function...........horizontal_scrollbar cannot show in after use set_primary_window function.")
dpg.add_text("vertical_scrollbar is ok.")
dpg.add_text("vertical_scrollbar is ok.")
dpg.add_text("vertical_scrollbar is ok.")
dpg.add_text("vertical_scrollbar is ok.")
dpg.add_text("vertical_scrollbar is ok.")
dpg.add_text("vertical_scrollbar is ok.")
dpg.add_text("vertical_scrollbar is ok.")
dpg.add_text("vertical_scrollbar is ok.")
dpg.add_text("vertical_scrollbar is ok.")
dpg.add_text("vertical_scrollbar is ok.")
dpg.add_text("vertical_scrollbar is ok.")
dpg.add_text("vertical_scrollbar is ok.")
dpg.add_text("vertical_scrollbar is ok.")
dpg.add_text("vertical_scrollbar is ok.")
dpg.add_text("vertical_scrollbar is ok.")
dpg.add_text("vertical_scrollbar is ok.")
dpg.add_text("vertical_scrollbar is ok.")
dpg.add_text("vertical_scrollbar is ok.")
dpg.add_text("vertical_scrollbar is ok.")
dpg.add_text("vertical_scrollbar is ok.")
dpg.add_text("vertical_scrollbar is ok.")
dpg.add_text("vertical_scrollbar is ok.")
dpg.add_text("vertical_scrollbar is ok.")
dpg.add_text("vertical_scrollbar is ok.")
dpg.add_text("vertical_scrollbar is ok.")
dpg.add_text("vertical_scrollbar is ok.")
dpg.add_text("vertical_scrollbar is ok.")
dpg.add_text("vertical_scrollbar is ok.")
global_theme()
dpg.bind_item_theme("MAIN_WINDOW","theme_id_global")
END()
if __name__=='__main__':
f=[]
instance=DPG_SCROLL()
instance.func()
Screenshot of the issue
*Horizontal_scrollbar do not show normally
I got the same issue, but I think I found a workaround. It works if you configure the item after setting it as the primary window :
with dpg.window(tag="Main Window"):
dpg.add_image("texture_tag", tag="image1")
dpg.set_primary_window("Main Window", True)
dpg.configure_item("Main Window", horizontal_scrollbar=True)
I got the same issue, but I think I found a workaround. It works if you configure the item after setting it as the primary window :
with dpg.window(tag="Main Window"): dpg.add_image("texture_tag", tag="image1") dpg.set_primary_window("Main Window", True) dpg.configure_item("Main Window", horizontal_scrollbar=True)
Thanks for your help!!!
It works!!!
The root cause is that set_primary_window
overrides window->configData.windowflags
entirely, instead of fixing just those of them that are needed for the primary window. Until this is fixed, @Tetane's workaround is the way to go.
Another side effect of set_primary_window
is that it can modify other windows, in particulary, by marking the window position as dirty. This affects positioning of modal windows:
- By default, a modal window is centered by DPG;
- If a modal window is created with show=False (with the intent of being displayed later), and
set_primary_window
is called on another window, the modal window will be displayed in top left corner instead of being centered. This is because it getsdirtyPos=true
duringset_primary_window
.