2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
GUI इति Graphical User Interface इत्यस्य संक्षिप्तनाम यः कोऽपि सङ्गणकस्य उपयोगं कृतवान् सः graphical user interface इत्यनेन परिचितः भवेत्, अतः अत्र विस्तरेण गन्तुं आवश्यकता नास्ति । Python इत्यस्य पूर्वनिर्धारितं GUI विकासमॉड्यूलम् tkinter (Paython 3 इत्यस्मात् पूर्वं संस्करणेषु Tkinter इति नामकरणं कृतम् अस्ति, अतः भवान् ज्ञातुं शक्नोति यत् एतत् Tk इत्यस्य आधारेण अस्ति यत् मूलतः Tcl कृते डिजाइनं कृतम् आसीत् तथा च पश्चात् अन्येषु अनेकेषु स्क्रिप्टिङ्ग् मध्ये पोर्ट् कृतम् आसीत् भाषासु, एतत् क्रॉस्-प्लेटफॉर्म GUI नियन्त्रणानि प्रदाति । अवश्यं, Tk नवीनतमः सर्वोत्तमः च विकल्पः नास्ति, तथा च अस्मिन् विशेषतया शक्तिशालिनः GUI नियन्त्रणानि नास्ति वस्तुतः, GUI अनुप्रयोगानाम् विकासः तत् न अस्ति यत् Python सर्वोत्तमम् अस्ति यदि भवान् वास्तवमेव GUI अनुप्रयोगानाम् विकासाय Python इत्यस्य उपयोगं कर्तुं प्रवृत्तः अस्ति । PyQt, PyGTK इत्यादयः मॉड्यूल्स् उत्तमः विकल्पः अस्ति ।
मूलतः GUI अनुप्रयोगानाम् विकासाय tkinter इत्यस्य उपयोगाय निम्नलिखित ५ चरणानां आवश्यकता भवति:
निम्नलिखितसङ्केतः सरलं GUI अनुप्रयोगं निर्मातुं tkinter इत्यस्य उपयोगः कथं करणीयः इति दर्शयति ।
import tkinter
import tkinter.messagebox
def main():
flag = True
# 修改标签上的文字
def change_label_text():
nonlocal flag
flag = not flag
color, msg = ('red', 'Hello, world!')
if flag else ('blue', 'Goodbye, world!')
label.config(text=msg, fg=color)
# 确认退出
def confirm_to_quit():
if tkinter.messagebox.askokcancel('温馨提示', '确定要退出吗?'):
top.quit()
# 创建顶层窗口
top = tkinter.Tk()
# 设置窗口大小
top.geometry('240x160')
# 设置窗口标题
top.title('小游戏')
# 创建标签对象并添加到顶层窗口
label = tkinter.Label(top, text='Hello, world!', font='Arial -32', fg='red')
label.pack(expand=1)
# 创建一个装按钮的容器
panel = tkinter.Frame(top)
# 创建按钮对象 指定添加到哪个容器中 通过command参数绑定事件回调函数
button1 = tkinter.Button(panel, text='修改', command=change_label_text)
button1.pack(side='left')
button2 = tkinter.Button(panel, text='退出', command=confirm_to_quit)
button2.pack(side='right')
panel.pack(side='bottom')
# 开启主事件循环
tkinter.mainloop()
if __name__ == '__main__':
main()
ज्ञातव्यं यत् GUI अनुप्रयोगाः प्रायः घटना-सञ्चालिताः भवन्ति मुख्य-घटना-पाश-प्रवेशस्य कारणं मूषक-कीबोर्ड-इत्यादीनां विविध-घटनानां घटनां निरीक्षितुं तथा च घटनानां संसाधनार्थं तत्सम्बद्ध-सङ्केतं निष्पादयितुं, यतः घटनाः निरन्तरं भवन्ति .अतः एतादृशः पाशः सर्वदा अग्रिमघटनायाः प्रतीक्षया चालितः भवितुम् आवश्यकः । अपरपक्षे Tk नियन्त्रणानां स्थापनार्थं त्रीणि विन्यासप्रबन्धकाः प्रदाति एते त्रयः विन्यासप्रबन्धकाः सन्ति ।Placer
(विकासकः नियन्त्रणस्य आकारं स्थापनं च प्रदाति),Packer
(स्वचालितरूपेण नियन्त्रणानि समुचितस्थानेषु आबादयन्तु) तथाGrid
(जालनिर्देशाङ्काधारितं नियन्त्रणं स्थापयन्तु), यत् अत्र न वर्णयिष्यते ।
Pygame इति एकः मुक्तस्रोतः पायथन् मॉड्यूलः अस्ति यस्य उपयोगः विशेषतया बहुमाध्यम-अनुप्रयोगानाम् (यथा विडियो-खेलानां) विकासाय भवति, यस्मिन् चित्राणि, ध्वनिः, विडियो, घटनाः, टकरावः इत्यादीनां समर्थनं भवति Pygame SDL इत्यत्र निर्मितम् अस्ति, यत् C भाषायां कार्यान्वितं क्रॉस्-प्लेटफॉर्म मल्टीमीडिया विकासपुस्तकालयानां समुच्चयः अस्ति तथा च गेम्स्, सिमुलेटर्, प्लेयर् इत्यादीनां विकासे व्यापकरूपेण उपयुज्यते Pygame इत्यनेन क्रीडाविकासकाः अन्तर्निहितभाषायाः बाध्यतां न प्राप्नुवन्ति तथा च क्रीडायाः कार्येषु तर्कशास्त्रेषु च अधिकं ध्यानं दातुं शक्नुवन्ति ।
अधुना एकं सरलं क्रीडां सम्पूर्णं कुर्मः।क्रीडायाः नाम "बृहत् कन्दुकं लघुकन्दुकं खादति" इति प्रक्रियायां पूर्वपदानां उपयोगः कथं करणीयः इति अवगच्छन्तु तथा च वास्तविकजीवनस्य समस्यानां समाधानार्थं एतस्य प्रोग्रामिंगविचारस्य उपयोगं कर्तुं शिक्षन्तु।
import pygame
def main():
# 初始化导入的pygame中的模块
pygame.init()
# 初始化用于显示的窗口并设置窗口尺寸
screen = pygame.display.set_mode((800, 600))
# 设置当前窗口的标题
pygame.display.set_caption('大球吃小球')
running = True
# 开启一个事件循环处理发生的事件
while running:
# 从消息队列中获取事件并对事件进行处理
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if __name__ == '__main__':
main()
pygame इत्यस्मिन् draw मॉड्यूल् इत्यस्य फंक्शन् इत्यस्य माध्यमेन विण्डो इत्यत्र आकर्षितुं शक्नुवन्ति येषु ग्राफिक्स् आकर्षयितुं शक्यन्ते तेषु : रेखाः, आयताः, बहुभुजाः, वृत्ताः, दीर्घवृत्ताः, चापाः इत्यादयः सन्ति । ज्ञातव्यं यत् पटलस्य निर्देशांकप्रणाली पटलस्य उपरि वामकोणं निर्देशांकमूलरूपेण (0, 0) सेट् करोति, दक्षिणतः x-अक्षस्य सकारात्मकदिशा, अधः च y- इत्यस्य सकारात्मकदिशा अस्ति । axis. तथाकथितः पिक्सेलः पर्दायां एकः बिन्दुः अस्ति यत् एतान् बिन्दून् द्रष्टुं चित्रं बहुवारं वर्धयितुं प्रयत्नः कर्तुं भवान् इमेज ब्राउजिंग् सॉफ्टवेयर् इत्यस्य उपयोगं कर्तुं शक्नोति । pygame इत्यस्मिन् वर्णप्रतिनिधित्वं त्रयः प्राथमिकवर्णप्रतिपादनविधिः उपयुज्यते, अर्थात् वर्णस्य RGB मूल्यं tuple अथवा list इत्यस्य माध्यमेन निर्दिष्टं भवति प्रत्येकं मूल्यं 0 तः 255 पर्यन्तं भवति, यतः प्रत्येकं प्राथमिकवर्णः 8-बिट् (bit) इत्यस्य उपयोगं करोति । मूल्यस्य प्रतिनिधित्वार्थं त्रयः वर्णाः कुलम् २४ बिट् इत्यस्य बराबराः भवन्ति, यत् प्रायः "२४-बिट् वर्णप्रतिपादनम्" इति उच्यते ।
import pygame
def main():
# 初始化导入的pygame中的模块
pygame.init()
# 初始化用于显示的窗口并设置窗口尺寸
screen = pygame.display.set_mode((800, 600))
# 设置当前窗口的标题
pygame.display.set_caption('大球吃小球')
# 设置窗口的背景色(颜色是由红绿蓝三原色构成的元组)
screen.fill((242, 242, 242))
# 绘制一个圆(参数分别是: 屏幕, 颜色, 圆心位置, 半径, 0表示填充圆)
pygame.draw.circle(screen, (255, 0, 0,), (100, 100), 30, 0)
# 刷新当前窗口(渲染窗口将绘制的图像呈现出来)
pygame.display.flip()
running = True
# 开启一个事件循环处理发生的事件
while running:
# 从消息队列中获取事件并对事件进行处理
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if __name__ == '__main__':
main()
यदि भवन्तः प्रत्यक्षतया विण्डो मध्ये चित्रं लोड् कर्तुं प्रवृत्ताः सन्ति तर्हि इमेज् लोड् कर्तुं pygame इत्यस्मिन् इमेज मॉड्यूल् इत्यस्य कार्यं उपयोक्तुं शक्नुवन्ति, ततः पूर्वं प्राप्तस्य विण्डो ऑब्जेक्ट् इत्यस्य blit मेथड् इत्यनेन इमेज् रेण्डर् कर्तुं शक्नुवन्ति
import pygame
def main():
# 初始化导入的pygame中的模块
pygame.init()
# 初始化用于显示的窗口并设置窗口尺寸
screen = pygame.display.set_mode((800, 600))
# 设置当前窗口的标题
pygame.display.set_caption('大球吃小球')
# 设置窗口的背景色(颜色是由红绿蓝三原色构成的元组)
screen.fill((255, 255, 255))
# 通过指定的文件名加载图像
ball_image = pygame.image.load('./res/ball.png')
# 在窗口上渲染图像
screen.blit(ball_image, (50, 50))
# 刷新当前窗口(渲染窗口将绘制的图像呈现出来)
pygame.display.flip()
running = True
# 开启一个事件循环处理发生的事件
while running:
# 从消息队列中获取事件并对事件进行处理
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if __name__ == '__main__':
main()
यदा एनिमेशनशब्दस्य विषयः आगच्छति तदा सर्वे तया परिचिताः सन्ति वस्तुतः एनिमेशनप्रभावं प्राप्तुं सिद्धान्तः एव अतीव सरलः भवति, यत् यावत् प्रति सेकण्ड् निश्चितसङ्ख्यायाः फ्रेमाः प्राप्यन्ते तावत् असंतुलितचित्रं वादयितुं भवति ततः कर्तुं शक्यते सुचारुतरं एनिमेशन इफेक्ट् उत्पादयन्तु । यदि भवान् उपरिष्टात् कोड् मध्ये कन्दुकं गन्तुं इच्छति तर्हि कन्दुकस्य स्थितिं प्रतिनिधितुं, लूप् मध्ये कन्दुकस्य स्थानं परिवर्तयितुं, ततः सम्पूर्णं विण्डो ताजगीकृत्य च चरस्य उपयोगं कर्तुं शक्नोति
import pygame
def main():
# 初始化导入的pygame中的模块
pygame.init()
# 初始化用于显示的窗口并设置窗口尺寸
screen = pygame.display.set_mode((800, 600))
# 设置当前窗口的标题
pygame.display.set_caption('大球吃小球')
# 定义变量来表示小球在屏幕上的位置
x, y = 50, 50
running = True
# 开启一个事件循环处理发生的事件
while running:
# 从消息队列中获取事件并对事件进行处理
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
screen.fill((255, 255, 255))
pygame.draw.circle(screen, (255, 0, 0,), (x, y), 30, 0)
pygame.display.flip()
# 每隔50毫秒就改变小球的位置再刷新窗口
pygame.time.delay(50)
x, y = x + 5, y + 5
if __name__ == '__main__':
main()
प्रायः क्रीडायां बहवः वस्तूनि भविष्यन्ति, एतेषां वस्तूनाम् मध्ये "सङ्घर्षः" अपरिहार्यः भवति, यथा विमानं प्रहारं कुर्वन् तोपगोलः, भूमौ प्रहारं कुर्वन् पेटी इत्यादयः टकरावस्य अन्वेषणं एकः महत्त्वपूर्णः विषयः अस्ति यस्य निवारणं अधिकांशेषु क्रीडासु अवश्यं भवति pygame इत्यस्य sprite (animated sprite) मॉड्यूल् टकरावस्य अन्वेषणस्य समर्थनं प्रदाति यतः वयं अत्र sprite module द्वारा प्रदत्तानि कार्याणि न परिचययिष्यामः लघुकन्दुकद्वयं संघातं करोति वा इति ज्ञातव्यम् । अधिकानि लघुकन्दुकं निर्मातुं वयं मूषकस्य घटनां संसाधित्वा यस्मिन् स्थाने मूषकं क्लिक् कृतं तत्र यादृच्छिकवर्णैः, आकारैः, गतिवेगैः च लघुकन्दुकं निर्मातुं शक्नुमः अवश्यम्, एतत् कर्तुं वयं Apply इत्यस्मात् पूर्वं यत् ज्ञातवन्तः तत् उपयोक्तुं शक्नुमः विषय-प्रधानं ज्ञानम् ।
मूषकस्य घटनाः इवेण्ट् लूप् मध्ये संसाधितुं शक्यन्ते इवेण्ट् ऑब्जेक्ट् इत्यस्य प्रकार एट्रिब्यूट् इत्यस्य माध्यमेन इवेण्ट् प्रकारः निर्धारयितुं शक्यते, तथा च माउस् क्लिक् इत्यस्य स्थानं pos एट्रिब्यूट् इत्यस्य माध्यमेन प्राप्तुं शक्यते । यदि भवान् कीबोर्ड इवेण्ट् सम्पादयितुम् इच्छति तर्हि एतत् स्थानम् अपि अस्ति ।
def main():
# 定义用来装所有球的容器
balls = []
# 初始化导入的pygame中的模块
pygame.init()
# 初始化用于显示的窗口并设置窗口尺寸
screen = pygame.display.set_mode((800, 600))
# 设置当前窗口的标题
pygame.display.set_caption('大球吃小球')
running = True
# 开启一个事件循环处理发生的事件
while running:
# 从消息队列中获取事件并对事件进行处理
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# 处理鼠标事件的代码
if event.type == pygame.MOUSEBUTTONDOWN and event.button == 1:
# 获得点击鼠标的位置
x, y = event.pos
radius = randint(10, 100)
sx, sy = randint(-10, 10), randint(-10, 10)
color = Color.random_color()
# 在点击鼠标的位置创建一个球(大小、速度和颜色随机)
ball = Ball(x, y, radius, sx, sy, color)
# 将球添加到列表容器中
balls.append(ball)
screen.fill((255, 255, 255))
# 取出容器中的球 如果没被吃掉就绘制 被吃掉了就移除
for ball in balls:
if ball.alive:
ball.draw(screen)
else:
balls.remove(ball)
pygame.display.flip()
# 每隔50毫秒就改变球的位置再刷新窗口
pygame.time.delay(50)
for ball in balls:
ball.move(screen)
# 检查球有没有吃到其他的球
for other in balls:
ball.eat(other)
if __name__ == '__main__':
main()
उपरिष्टाद् द्वौ कोडखण्डौ एकत्र स्थापयित्वा वयं "बृहत् कन्दुकं लघुकन्दुकं खादति" इति क्रीडां सम्पन्नवन्तः (यथा अधोलिखिते चित्रे दर्शितं यत्, एषः क्रीडा नास्ति, परन्तु वयं क small game एतत् उदाहरणं सर्वेभ्यः वदति यत् एतेन ज्ञानेन भवान् स्वस्य लघुक्रीडाविकासयात्राम् आरभुं शक्नोति। वस्तुतः उपर्युक्ते कोड् मध्ये सुधारणीयाः बहवः क्षेत्राणि सन्ति यथा, विण्डो इत्यस्य ताजगीं कर्तुं कन्दुकं चालयितुं च कोड् बहु-थ्रेडिंग् इत्यस्य ज्ञानं ज्ञात्वा तस्य उपयोगः सम्भवति एतानि वस्तूनि नियन्त्रयितुं पृष्ठभूमिसूत्रः उत्तमः विकल्पः अस्ति । यदि वयं उत्तमं उपयोक्तृअनुभवं प्राप्तुम् इच्छामः तर्हि वयं क्रीडायां पृष्ठभूमिसङ्गीतं योजयितुं शक्नुमः तथा च यदा कन्दुकं कन्दुकेन सह टकरावं करोति तदा ध्वनिप्रभावं वादयितुं शक्नुमः pygame इत्यस्य मिश्रकस्य संगीतमॉड्यूलस्य च उपयोगेन वयं सहजतया एतत् कर्तुं शक्नुमः अयम्। वस्तुतः यदि भवान् pygame विषये अधिकं ज्ञातुम् इच्छति तर्हि सर्वोत्तमः पाठ्यक्रमः pygame इत्यस्य आधिकारिकजालस्थलम् अस्ति यदि भवतां आङ्ग्लभाषायाः समस्या नास्ति तर्हि भवान् गत्वा अवलोकयितुं शक्नोति। यदि भवान् 3D गेम्स् विकसितुं इच्छति तर्हि pygame अपर्याप्तः इति भासते ये पाठकाः 3D गेम विकासे रुचिं लभन्ते ते Panda3D इत्यस्य अवलोकनं कर्तुम् इच्छन्ति।