messagebox
messagebox برای نمایش کادر پیام در برنامه استفاده میشود. این عنصر با فراهم آوردن تعدادی تابع، امکان نمایش پیام مناسب را فراهم میآورد. به شکل ساده، نحوه استفاده این عنصر به شکل زیر است:
messagebox.FunctionName(title, message [, options])
در کد بالا FunctionName، نام تابع مناسب برای نمایش پیام میباشد، که به جای آن باید از یکی از توابع زیر استفاده کرد:
- ()showinfo
- ()showwarning
- ()showerror
- ()askquestion
- ()askokcancel
- ()askyesno
- ()askretrycancel
توابع بالا پارامترهایی میگیرند که در جدول زیر، به آنها اشاره شده است:
پارامتر | توضیح |
Title | متن نوار عنوان را مشخص میکند. |
message | متنی که باید به عنوان پیام نمایش داده شود. |
options | میتواند برای تنظیم گزینههای مختلف استفاده شود تا تغییراتی در نحوه نمایش کادر پیام ایجاد شود. برخی از این تنظیمات گزینههای default و parent هستند. default برای مشخص کردن دکمه پیش فرض استفاده میشود. از قبیل: ABORT،RETRY یا IGNORE. گزینه parent برای مشخص کردن پنجرهای که کادر پیام باید بر روی آن نمایش داده شود، استفاده میشود. |
موارد گفته شده در مثال زیر خلاصه میشود:
1: import tkinter 2: from tkinter import messagebox 3: 4: # hide main window 5: root = tkinter.Tk() 6: root.withdraw() 7: 8: # message box display 9: messagebox.showerror("Error", "Error message") 10: messagebox.showwarning("Warning","Warning message") 11: messagebox.showinfo("Information","Informative message") 12: messagebox.askquestion("Question","askquestion message") 13: messagebox.askokcancel("Ok Cancel","askokcancel message") 14: messagebox.askyesno("Yes No","askyesno message") 15: messagebox.askyesnocancel("Yes No Cansel","askyesnocancel message")
در کد بالا ما از توابع مختلف برای نمایش پیامهای متفاوت استفاده کردهایم (خطوط 15-9). در خط 6 با استفاده از تابع ()withdraw پنجره اصلی برنامه را مخفی نمودهایم، چون نیازی به آن نداریم. همانطور که مشاهده میکنید، در خط 8، تابع ()showerror باعث ایجاد پیغامی به صورت زیر میشود:
اولین آرگومان این تابع یعنی رشته error، عنوان پنجره و دومین آرگومان آن هم متن داخل پنجره یعنی Error message را مشخص میکند. بسته به نوع تابعی که ما استفاده میکنیم، هم تعداد دکمهها و هم نوع آیکون پیغام هم متفاوت است. مثلاً استفاده از تابع ()askyesnocancel در خط 8، باعث ایجاد پیغامی با سه دکمه، NO ،Yes و Cansel میشود:
به آیکون متفاوت این پیغام هم توجه کنید. در شکل بالا، در حالت پیشفرض، دکمه Yes به عنوان دکمه پیشفرض میباشد، اگر بخواهید مثلاً دکمه No دکمه پیشفرض باشد باید از آرگومان سوم تابع ()askyesnocancel استفاده کنید که با گرفتن یک ثابت، دکمه پیشفرض را تعیین میکند:
messagebox.askyesnocancel("Yes No Cansel", "askyesnocancel message", default= messagebox.NO )
با اجرای برنامه، مشاهده میکنید که دکمه No به صورت پیشفرض در میآید:
منظور از دکمه پیشفرض، دکمهای است که با فشردن دکمه Enter صفحه کلید، آن دکمه عمل کند. کلیک بر روی دکمههای مختلف، مقادیر متفاوتی را در اختیار ما میگذارد. مثلاً کلیک بر روی دکمههای No ،Yes و Cancel یه ترتیب باعث بازگشت مقادیر False ،True و None میشود. با استفاده از مقادیر بازگشتی میتوان فهمید که کاربر بر روی کدام دکمه کلیک کرده، و در نتیجه عملیات متفاوتی را بر هر کلیک در نظر گرفت. خطوط 9-15 کد بالا را به صورت زیر تغییر داده و برنامه را اجرا و با کلیک بر روی دکمههای مختلف، نتیجه را مشاهده نمایید:
result = messagebox.askyesnocancel("Yes No Cansel","askyesnocancel message", default= messagebox.NO) if result == True: messagebox.showinfo('', 'Yes button clicked!') if result == False: messagebox.showinfo('', 'No button clicked!') if result == None: messagebox.showinfo('', 'Cancel button clicked!')
در کد بالا چون ما دکمه No را به صورت پیشفرض در آوردهایم در نتیجه با کلیک بر روی دکمه Enter، پیغام !No button clicked نمایش داده میشود.
سلام ، پایتون یه چیزی نداره مثل ویندوز فرم سی شارپ ؟
در ویندوز فرم : دکمه ها ، تکست باکس و… رو با درگ & دراپ میزاریم روی فرم و اینکه اندازه فرم و همش به صورت کاملا گرافیکی هست و فققط برای رویدادها کد مینویسم ( مثلا روی تکست باکس کلیک شد ، روی دکمه کلیک شد و.. ) اما انگار پایتون برای ایجاد دکمه و تکست باکس و… هم باید کد نوشت ، یا حتی تعیین موقعیت تکست باکس و..
در حالی که ویندوز فرم #C ، همه اینها رو با با کشیدن موس توسط ما ، کد رو خودش مینویسه ، پایتون که میگن اینقدر قدرتمنده ! همچین چیزی داره اصلا ؟ فقط سینتکس ساده ای داره پایتون مثلا در tkinter و.. باید برای دکمه و تکست و.. کد نوشت ، حداقل توی ویندوز فرم با کشیدن موس میتونیم دکمه بزاریم تکست باکس و… بزاریم ، فقط برای رویدادها کد مینویسیم مثلا روی دکمه کلیک شد(کد سی شارپ مینویسیم)
اگر پایتون یه چیزی مثل ویندوز فرم داره بهم معرفی کن
با سپاس
مسیج باکس رو بزارید در یک متغیر.
اگر None داد یعنی اتفاقی نیوفتاده
یه سوال دارم
می خواستم وقتی که کاربر میزنه روی ضربدر یکی از اینا بیاد
باید چه کار کنم؟؟؟