Window_programming

Window Programming PE ์œˆ๋„์šฐ๋Š” ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๋ชฉ์  ํŒŒ์ผ์„ PE ํฌ๋ฉง์ด๋ผ ์นญํ•œ๋‹ค. (๋ฆฌ๋ˆ…์Šค์˜ ELF ์™€ ์œ ์‚ฌ) PE ํŒŒ์ผ์€ header ์™€ section ์œผ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. section ์—๋Š” ์ด๋ฆ„, ํฌ๊ธฐ, ๋กœ๋“œ๋  ์ฃผ์†Œ์˜ ์˜คํ”„์…‹, ์†์„ฑ๊ณผ ๊ถŒํ•œ ๋“ฑ์˜ ์ •๋ณด๊ฐ€ ๋“ค์–ด์žˆ๋‹ค. PE ํŒŒ์ผ์— ๋“ค์–ด๊ฐ€์•ผ ํ•  ํ•„์ˆ˜ section ์€ ์—†์ง€๋งŒ, โ€˜.textโ€™, โ€˜.dataโ€™, โ€˜.rdataโ€™ section ์ด ์ฃผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค. .text: ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๊ธฐ๊ณ„์ฝ”๋“œ๊ฐ€ ์œ„์น˜ํ•˜๋Š” ์˜์—ญ (์ฝ๊ธฐ, ์“ฐ๊ธฐ ๊ฐ€๋Šฅ) .data: ์ปดํŒŒ์ผ ์‹œ์ ์— ์ •ํ•ด์ง„ ์ „์—ญ ๋ณ€์ˆ˜๋“ค์ด ์œ„์น˜ํ•˜๋Š” ์˜์—ญ (์ฝ๊ธฐ, ์“ฐ๊ธฐ ๊ฐ€๋Šฅ) .rdata: ์ปดํŒŒ์ผ ์‹œ์ ์— ๊ฐ’์ด ์ •ํ•ด์ง„ ์ „์—ญ ์ƒ์ˆ˜์™€ ์ฐธ์กฐํ•  DLL ๋ฐ ์™ธ๋ถ€ ํ•จ์ˆ˜๋“ค์˜ ์ •๋ณด๊ฐ€ ์œ„์น˜ํ•˜๋Š” ์˜์—ญ (์ฝ๊ธฐ๋งŒ ๊ฐ€๋Šฅ) ์œˆ๋„์šฐ๊ฐ€ ์‹คํ–‰๋˜๋ฉด PE ํŒŒ์ผ์˜ ๋ฐ์ดํ„ฐ๋“ค์ด ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ๋œ๋‹ค.

<span title='2024-05-12 16:02:25 +0900 KST'>May 12, 2024</span>&nbsp;ยท&nbsp;1 min&nbsp;ยท&nbsp;AswinBlue

Kivy

#kivy Basic concepts Widget ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ฐ์ฒด widget์€ ๋‹ค๋ฅธ widget์„ treeํ˜•ํƒœ๋กœ ํฌํ•จ ๊ฐ€๋Šฅํ•˜๋ฉฐ ๋ฒ„ํŠผ, ๋ผ๋ฒจ ๋“ฑ์ƒํ˜ธ์ž‘์šฉ ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด ๋˜๋Š” Widget์˜ ์ง‘ํ•ฉ ์œ„์น˜๋Š” ์ขŒํ‘œ๋กœ ํ‘œํ˜„๋˜๋Š”๋ฐ ์ขŒํ‘œ๋Š” ์ขŒ์ธกํ•˜๋‹จ์ด (0,0)์ด๋‹ค. Layout ํ™”๋ฉด ๊ตฌ์„ฑ์„ ์„ค์ •ํ•œ ์š”์†Œ widget ํ˜น์€ layout์„ ํฌํ•จ ๊ฐ€๋Šฅํ•˜๋‹ค. structure main.py์— python์œผ๋กœ ๋‚ด์šฉ์„ ์ž‘์„ฑํ•œ๋‹ค. class TheLabApp(App): pass TheLabApp().run() main.py์—์„œ ์„ ์–ธํ•œ class โ€˜TheLabAppโ€™ ์—์„œ App์„ ๋บ€ TheLab์„ ๋”ฐ์„œ main.py์™€ ๊ฐ™์€ ๊ฒฝ๋กœ์— โ€˜TheLab.kvโ€™ํŒŒ์ผ์„ ์ƒ์„ฑํ•œ๋‹ค. / |-main.py |-TheLab.kv .pyํŒŒ์ผ์—์„œ ์›ํ•˜๋Š” layout class๋ฅผ ์ƒ์†๋ฐ›์•„ ๊ฐ์ฒด๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜๋„ ์žˆ๊ณ , .kvํŒŒ์ผ์—์„œ ๋ฐ”๋กœ ์ž‘์„ฑํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ๋‹จ, .kvํŒŒ์ผ์—์„œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋ฉด .pyํŒŒ์ผ์— ์ •์˜๋œ class๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. <EXAMPLE@BoxLayout> ์™€ ๊ฐ™์ด .pyํŒŒ์ผ์˜ class ์„ ์–ธ์„ ์ƒ๋žตํ•˜๊ณ  default ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ๋‹ค. ///////// .py ///////// class Box(BoxLayout): pass ///////// .kv ///////// <Box>: # .py์—์„œ ์ •์˜๋œ Box๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉ ๊ฐ€๋Šฅ GridLayout: # ์ดํ›„๋ถ€ํ„ฐ๋Š” kivy์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ฐ์ฒด๋“ค ์‚ฌ์šฉ ๊ฐ€๋Šฅ label: text:"lb" <Box2@BoxLayout>: # .pyํŒŒ์ผ์—์„œ ์•„๋ฌด๊ฒƒ๋„ ํ•˜์ง€ ์•Š๋Š” ๊ฐ์ฒด๋ฅผ ์„ ์–ธํ•˜๊ธฐ ์‹ซ์„ ๋•Œ ์‚ฌ์šฉ /////////////////////// ex) class ์•ˆ์—์„œ ์†์„ฑ ์„ค์ • :self.orientation = "vertical" ex) kvํŒŒ์ผ์—์„œ ์†์„ฑ ์„ค์ • : orientation: "vertical" <NAME>ํ˜•ํƒœ๋กœ ์„ ์–ธํ•œ ๊ฐ์ฒด๋Š” ๋‹ค๋ฅธ ๊ฐ์ฒด์—์„œ ์‚ฌ์šฉํ• ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. <Box>: ... <Box2>: Button: ... Box: # ์‚ฌ์šฉ์ž ์ •์˜ ๊ฐ์ฒด ... .kvํŒŒ์ผ์€ ์•„๋ž˜์™€ ๊ฐ™์ด ๊ตฌ์„ฑ๋œ๋‹ค. ํ™”๋ฉด์„ ๊ตฌ์„ฑํ•˜๋Š” ๋‚ด์šฉ๋“ค์˜ ์†์„ฑ์„ ์ •์˜ํ•˜๊ณ  ๋ฐฐ์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค. MainWidget: # ํ™”๋ฉด์— ํ‘œ๊ธฐํ•  ๊ฐ์ฒด(widget, layout, โ€ฆ) : # widget ์ •์˜ Button: # widget ๋‚ด๋ถ€ ํ•ญ๋ชฉ ์„ ์–ธ, kivy์—์„œ ์ง€์›ํ•˜๋Š” ๊ฐ์ฒด์˜ ์ข…๋ฅ˜ text:โ€œAโ€ Button: text:โ€œBโ€ ...

<span title='2021-09-09 18:43:28 +0900 KST'>September 9, 2021</span>&nbsp;ยท&nbsp;5 min&nbsp;ยท&nbsp;AswinBlue