بیشتر افرادی که برای اولین بار قصد ورود به حوزهی برنامه نویسی دارند، تصورشان از برنامه نویسی، ساخت برنامههای گرافیکی است؛ در صورتی که برنامههای گرافیکی، فقط بخشی از حوزهی برنامه نویسی هستند. پایتون، یک زبان ایدهآل برای ایجاد برنامههای گرافیکی نیست، اما با وجود کتابخانههایی نظیر Tkinter ،kivy و... ، میتوان برنامههای گرافیکی بسیار خوبی با استفاده از پایتون نوشت. ما در این قسمت، کتابخانهی پرکاربرد و محبوب Tkinter پایتون را به شما آموزش میدهیم. اگر علاقهمند به این مبحث هستید، در ادامه با ما همراه باشید.
رابط کاربری گرافیکی
رابط کاربری گرافیکی (Graphical User Interface) که بهاختصار با عنوان GUI شناخته میشود، نوعی رابط کاربری است که به کاربران امکان میدهد از طریق شاخصهای تصویری و با استفاده از مواردی همچون آیکونها، منوها، پنجرهها و... با کامپیوتر ارتباط برقرار کنند. GUI بر خلاف رابط خط فرمان (Command Line Interface) است که کاربران از طریق صفحهکلید و تایپ دستورات، با کامپیوتر ارتباط برقرار میکنند و این دشواری خود را دارد.
کتابخانه Tkinter
Tkinter ماژول داخلی پایتون است که برای ایجاد برنامههای GUI استفاده میشود. کار با Tkinter بسیار ساده است. این ماژول، جزئی از کتابخانهی استاندارد پایتون است و نیازی به نصب جداگانه ندارد زیرا به همراه خود پایتون نصب میشود. از این رو، Tkinter یکی از پرکاربردترین ماژولها برای ایجاد برنامههای GUI در پایتون است.
برخی دیگر از کتابخانههای پایتون برای ایجاد برنامههای GUI عبارتند از:
Kivy
Python Qt
wxPython
که در این میان Tkinter بیشترین کاربرد و استفاده را دارد.
ایجاد برنامهی GUI با استفاده از Tkinter کار آسانی است. تمام آنچه که شما باید انجام دهید، دنبال کردن مراحل زیر است:
ماژول Tkinter را وارد کنید.
پنجرهی اصلی برنامهی GUI را ایجاد کنید.
یک یا چند ابزارک را به برنامهی GUI اضافه کنید.
حلقهی رویداد اصلی را وارد کنید تا با هر اقدام کاربر، عملی انجام دهد.
مثال:
from tkinter import * # =================== مرحله 1
# writing code needs to
# create the main window of
# the application creating
# main window object named root
root = Tk() # ====================== مرحله 2
# giving title to the main window
root.title("First_Program")
# Label is what output will be
# show on the window
label = Label(root, text ="Hello World !").pack() #===== مرحله 3
# calling mainloop method which is used
# when your application is ready to run
# and it tells the code to keep displaying
root.mainloop() #===================== مرحله 4
ابزارکهای Tkinter
ابزارکها (Widgets) در Tkinter، عناصر برنامهی GUI هستند که برای تعامل کاربران با برنامه، کنترلهای مختلفی (مانند برچسبها، دکمهها، منوها، چک باکسها، دکمههای رادیویی و موارد دیگر) ارائه میدهند.
به طور کلی، ابزارک عنصری از رابط کاربری گرافیگی (GUI) است که اطلاعات را نمایش میدهد یا راهی برای تعامل کاربر با سیستم عامل فراهم میکند. در Tkinter، ابزارکها اشیاء هستند یعنی نمونههایی از کلاسها که دکمهها، قالبها و... را نشان میدهد.
هر ابزارک جداگانه یک شی پایتون است. هنگام ایجاد ابزارک، باید والد آن را به عنوان یک پارامتر به تابع ایجاد ابزارک وارد کنیم. تنها استثنا، پنجرهی "root" است که پنجرهی سطح بالایی بوده، شامل همهی موارد دیگر میشود و والد ندارد.
در ادامه لیستی از ابزارکهای اصلی که Tkinter از آنها پشتیبانی میکند، به همراه توضیحات کوتاهی از کاربرد هر یک را مشاهده میکنید:
Label: برای نمایش متن یا تصویر بر روی صفحه استفاده میشود.
Button: برای افزودن دکمهها به برنامهی شما استفاده میشود.
Canvas: برای کشیدن تصویر و طرحهای دیگر مانند گرافیک، متن و غیره استفاده میشود.
ComboBox: یک پیکان رو به پایین برای انتخاب گزینهای از لیست گزینههای موجود، در اختیار کاربر قرار میدهد.
CheckButton: کاربر از طریق آن میتواند چندین گزینه از گزینههای موجود را انتخاب کند.
RadiButton: برای انتخاب فقط یک مورد از گزینههای موجود از این آیتم استفاده میشود.
Entry: برای وارد کردن متن تکخطی کاربر استفاده میشود.
Frame: به عنوان محلی برای نگهداری و سازماندهی ابزارکها استفاده میشود.
Message: کارکردی شبیه به برچسب (Label) دارد و برای متنهای چندخطی و غیر قابل ویرایش استفاده میشود.
Scale: یک اسلایدر گرافیکی ایجاد کرده و امکان انتخاب مقدار دلخواه با جابجایی آن را میدهد.
Scrollbar: برای پیمایش به پایین محتویات استفاده میشود.
SpinBox: این امکان را به کاربر میدهد تا از مقادیر تعیینشده، مقداری را انتخاب کند.
Text: امکان ایجاد، ویرایش و نحوهی نمایش یک متن چندخطی را به کاربر میدهد.
Menu: برای ایجاد انواع منو در برنامه استفاده میشود.
مدیریت هندسه ابزارک
ایجاد کردن یک ابزارک به معنی نمایش در صفحه نیست، بلکه برای نمایش آن، باید یکی از سه متد grid ،pack و یا place را فراخوانی کنیم.
()pack: ابزارکها را در سطرها یا ستونها دستهبندی میکند.
()grid: ابزارکها را در یک جدول دو بعدی قرار میدهد.
()place: به شما امکان میدهد، موقعیت و اندازهی یک پنجره را به صورت مطلق یا نسبت به پنجرهی دیگر مشخص کنید.
همانطور که مشاهده میکنید، تعداد ابزارکهای اصلی Tkinter پرشمار بوده و در این آموزش وقت کافی برای توضیح دادن هر یک وجود ندارد. لذا ما با نوشتن یک برنامه، نحوهی کار کردن با Tkinter و تعدادی از ابزارکهای آن را به شما آموزش خواهیم داد. اگر نیاز به کسب اطلاعات بیشتری در مورد ماژول Tkinter دارید، میتوانید مستندات پایتون را مطالعه کنید.
ماشین حساب گرافیکی با Tkinter پایتون
در آموزشهای قبلی پایتون، نحوهی نوشتن ماشین حساب ساده در محیط خط فرمان را به شما آموزش دادیم که میتوانید آن را در مقالهی "برنامه ماشین حساب ساده در پایتون" مطالعه کنید. اما در اینجا فرصتی پیش آمد تا نحوهی نوشتن یک ماشین حساب GUI را با پایتون آموزش دهیم. ظاهر ماشین حسابی که ما خواهیم نوشت همانند شکل زیر است:
برای این کار، مرحله به مرحله کد خود را تکمیل میکنیم. ابتدا، همانند مراحل بیانشده برای ایجاد برنامهی GUI اقدام به ایجاد بدنهی اصلی برنامه میکنیم. به این صورت:
from tkinter import *
cal = Tk()
cal.title("Calculator")
cal.mainloop()
خروجی این کد در ویندوز مانند شکل زیر است.
ایجاد نمایشگر
بعد از ایجاد کلیت برنامه GUI به سراغ ساخت اجزای یک ماشین حساب گرافیکی میرویم. اولین قسمت، صفحه نمایشگر ماشین حساب است. نحوهی ایجاد آن به صورت زیر است:
در قطعه کد بالا، متغیر operator یک رشتهی خالی است که مقادیر وارد شده را در خود نگه میدارد و متغیر text_input با استفاده از متد ()StringVar کتابخانهی Tkinter، ورودی را از صفحه کلید دریافت میکند.
برای ایجاد نمایشگر ماشین حساب باید یک شی از کلاس Entry بسازیم. در اینجا شی ما txtDisplay است که در اولین پارامتر، والد خود یعنی cal را میگیرید و در ادامه پارامترهایی که داده میشود، مربوط به ویژگیهای (options) ابزارک است. ویژگیهای از قبیل اندازه، فونت، رنگ، جایگاه و غیره که این نمایشگر را به شکل دلخواه شما در میآورد.
برای کسب اطلاعات بیشتر در مورد ویژگیهای Entry، مستندات Tkinter را مطالعه کنید.
خروجی کد بالا در ویندوز به صورت زیر است:
ایجاد دکمهها
با دکمهی "7" کار خود را آغاز میکنیم. برای ساخت دکمه باید از کلاس Button استفاده کنیم. ابتدا شی btn7 را میسازیم و در اولین پارامتر، والد اصلی که همان cal است را وارد میکنیم و در ادامه ویژگیهای دکمهی دلخواه خود را وارد میکنیم. برای کسب اطلاعات بیشتر در مورد ویژگیهای Button، مستندات Tkinter را مطالعه کنید.
همانند btn7 و با همین ویژگیها، سه دکمهی دیگر به نامهای btn8 ،btn9 و addition را میسازیم. تنها تفاوت این سه دکمه در ویژگی text و متد grid آنها است. به کدهای زیر دقت کنید:
اگر این کدها را اجرا کنیم، خروجی برنامه به صورت زیر است:
حالا به همین ترتیب سایر دکمههای ماشین حساب را ایجاد میکنیم. لازم به ذکر است که به ویژگیهای text و متد grid هر یک از این دکمهها به دقت توجه کنید، تا اختلاف آنها را متوجه شوید. کد نوشتهشدهی ما به صورت زیر خواهد بود:
کد نویسی بخش ظاهر ماشین حساب ما کامل شد و اکنون به سراغ نوشتن توابع، برای فعال شدن دکمهها و نمایشگر میپردازیم.
نوشتن تابع btnClick
برای آنکه دکمههایی که ایجاد کردهایم بتوانند عدد مورد نظر را در نمایشگر نشان دهند، لازم است تابعی بنویسیم که با وارد کردن آن در ویژگیهای هر یک از دکمهها، عدد دکمه مدنظر ما را نمایش دهد. بنابراین یک تابع به نام btnClick تعریف میکنیم که با استفاده از کلمهی کلیدی global تغییرات ایجاد شدهی احتمالی را روی متغیر بیرونی operator اعمال کند.
from tkinter import *
def btnClick(numbers):
global operator
operator = operator + str(numbers)
text_input.set(operator)
...
بعد از نوشتن تابع، با استفاده از ویژگی command، دکمهها و با کمک یک lambda آن را در تمامی دکمهها به جز دکمههای btnEquals و btnClear وارد میکنیم. برای نمونه، نحوهی وارد کردن تابع در btn7 به صورت زیر است:
تا اینجای کار، اگر برنامه را اجرا کنید، تمامی دکمهها به جز دکمهی btnEquals کار خواهند کرد.
نوشتن تابع btnEqualsInput
مرحلهی آخر، نوشتن تابعی است که حاصل محاسبات داده شده را به دست آورد. لذا تابع btnEqualsInput را تعریف میکنیم که در آن با استفاده از متد eval عملیات داده شده را محاسبه میکند. به این صورت:
به صورت مرحله به مرحله، کد نویسی یک ماشین حساب GUI را به جلو بردیم و برای این کار، از ماژول محبوب Tkinter پایتون استفاده کردیم. کد کامل شدهی ما به صورت زیر است:
اگر این کد را اجرا کنید، یک ماشین حساب سادهی گرافیکی به شما نمایش داده میشود که با کلیک روی دکمههای آن، کار خواهد کرد. لازم به ذکر است، این ماشین حساب، فقط به منظور آموزش عملی Tkinter نوشته شده و هنوز نواقص و کمبودهایی دارد که شما میتوانید برای تمرین و یادگیری بیشتر، به رفع مشکلات آن بپردازید.
جمع بندی
در این آموزش، از مفهوم رابط کاربری گرافیکی گفتیم و سپس ماژول Tkinter را برای نوشتن اینگونه برنامهها معرفی کردیم. همچنین نحوهی ایجاد یک برنامهی GUI با Tkinter را در پایتون آموزش داده و انواع ابزارکهای Tkinter و کاربرد هر یک را به اختصار توضیح دادیم. در ادامه، به صورت عملی نوشتن یک ماشین حساب گرافیکی را آموزش دادیم. مباحث Tkinter فراتر از مطالب عنوان شده در این مقاله است، که در صورت علاقهمندی میتوانید یادگیری آنها را دنبال کنید. امیدواریم با این آموزش، رضایت شما را به دست آورده باشیم. خوشحال میشویم نظرات خود را در مورد برنامه نویسی برنامههای GUI در پایتون با ما به اشتراک بگذارید.
اگر به یادگیری بیشتر در زمینهی برنامه نویسی پایتون علاقه داری، یادگیری زبان پایتون بسیار ساده است. و با شرکت در دورهی آموزش پایتون توسعه وب در آینده میتونی اپلیکیشن موبایل و دسکتاپ بسازی و وارد حوزهی هوش مصنوعی هم شوی.
با سلام خدمت شما
در این عبارت
def btnEqualsInput():
global operator
sumup = str(eval(operator))
text_input.set(sumup)
operator=""
اگه به جای خط آخر از operator=sumup استفاده کنید ماشین حساب بر طبق جواب میتونه عملگر بعدی رو اجرا کنه
با تشکر
علی۱۹ اسفند ۱۴۰۲، ۱۴:۱۷
سلام خسته نباشید.چگونه به این ماشین حساب دکمه هایی را اضافه کنیم.مثلا برای اضافه کردن دکمه توان دوم چه کدی را باید اضافه کرد؟لطفا تمام کد که باید اضافه شود را بنویسید.
نازنین کریمی مقدم۲۸ اسفند ۱۴۰۲، ۲۰:۱۰
درود
برای سایر دکمهها مشابه با مثالهایی که زدیم یک دکمه در بخش رابط گرافیکی ایجاد کنید و برای بخش منطق کافیه از یک تابع جدید استفاده کنید و منطق x*x رو درونش بنویسید. برای کد هم پاسخ این تاپیک جواب دقیق سوال شماست:
https://stackoverflow.com/questions/38488767/calculator-power-button
farshad۱۷ اسفند ۱۴۰۲، ۱۰:۲۳
یه سوالی داشتم من با استفاده از حلقههای فور من بیستا buttonهای متفاوت دارم لی مشکلی که الان درم برای مثال قتی میخام روی دکمه ی a کلیک کنم میخواهم تابع a برایم اجرا شود یا مثلا وقتی دکمه ی b را زدم بره و تابع ی b رو اجرا کنه دکمهها رو با حلقه ی for نوشتم بخاطر همین نمیتونم جداگانه به هر کدومشون دستور commend بدم ممنون میشم اگه بتونین کمکم کنین
نازنین کریمی مقدم۲۸ اسفند ۱۴۰۲، ۱۹:۵۷
درود
شما میتونید برای هر دکمه از if استفاده کنید که چنین مشکلی پیش نیاد. برای مثال با if بگید اگر روی دکمه a زد تابع a اجرا بشه و به همین صورت تا آخر.
حلقه for برای وقتی استفاده میشه که یک کار مشابه رو به دفعات بخوایم انجام بدیم.
علی۱۱ اسفند ۱۴۰۲، ۲۱:۰۲
سلام خسته نباشید.در این برنامه ای که نوشتید وقتی حاصل یک عملیات ریاضی مثل ضرب یا تقسیم بدست میاد نمیتوان دوباره بر روی همین حاصل کار کرد.مثلا اگر کسی در ابتدا ۳ را در ۵ ضرب کند حاصل ۱۵ بدست میآید ولی دیگر نمیشه همان لحظه فقط با نوشتن ضربدر ۳ به عدد ۴۵ برسیم چرا که حاصل پس از یک عملیات ریاضی بر روی صفحه باقی نمیمونه در حالی که در ماشین حسابهای دیگر این گونه نیست.با اضافه کردن چه کدی به کدهای ماشین حساب میشه این مشکل رو رفع کرد؟لطفا سریع جواب بدید خیلی مهم هست
نازنین کریمی مقدم۲۸ اسفند ۱۴۰۲، ۲۰:۳۵
درود
همونطور که در کد مشخصه ما برای نوشته نمایشی textvariable=text_input رو نسب دادیم یعنی هر دفعه ورودی رو مستقیم نمایش میده. برای اینکه این اتفاق نیفته کافیه که مقدار نمایش داده شده قبلی رو در یک متغیر مثل old_input نگه دارید و old_input + text_input = textvariable بشه. البته این کار دردسر زیاد داره، حالات مختلفی رو باید مدیریت کنید که برنامه به خطا نخوره چون اگر یک عملگر مثل + رو بزنید با حالتی که هیچ عملگری رو نزنید باید تفکیک بشه. برای همین ما کلا مقدار قبلی رو نگه نمیداریم و مستقیم مقدار جدید رو نشون میدیم.
امیر حسین رزاقی۲۶ بهمن ۱۴۰۲، ۱۷:۵۵
سلام چطور میتونم به همراه tkinterیک بازی سنگ کاغذ قیچی درست کنم؟
نازنین کریمی مقدم۳۰ بهمن ۱۴۰۲، ۰۶:۲۱
درود
لینک زیر رو بررسی کنید:
https://www.geeksforgeeks.org/rock-paper-and-scissor-game-using-tkinter/
ستاره۱۴ بهمن ۱۴۰۲، ۱۴:۵۷
سلام ببخشید اون قسمت که یک تابع lambda بدون ارگومان برای تابع btnClick رو گذاشتین متوجه نمیشم وقتی لامبدا ارگومانی نداره چیکار میکنه؟
نازنین کریمی مقدم۱۵ بهمن ۱۴۰۲، ۰۷:۰۸
درود
همه جا lambda به یک تابع کلیک دکمه متصل شده. درمورد اینکه چرا اینطوری نوشته میشه چندتا کامنت پایینتر توضیح دادم.
Mr.amir۱۲ بهمن ۱۴۰۲، ۱۸:۲۷
سلام آیا tkinter رو میشه به فایل apk تبدیل کرد؟؟
نازنین کریمی مقدم۱۴ بهمن ۱۴۰۲، ۱۱:۰۱
درود
tkinter مخصوص دسکتاپ هست. برای apk باید از kivy استفاده کنید.
Mr.amir۱۲ بهمن ۱۴۰۲، ۱۳:۲۴
سلام برای وارد کردن عکس چیکار باید کرد؟؟؟
نازنین کریمی مقدم۱۴ بهمن ۱۴۰۲، ۱۱:۰۲
درود
میتونید از راهکارهای تاپیک زیر کمک بگیرید:
https://stackoverflow.com/questions/10133856/how-to-add-an-image-in-tkinter
نرگس۰۷ بهمن ۱۴۰۲، ۱۲:۱۷
سلام من وقتی میخوام ttk رو در تیکندر بیارم متاسفانه نمیشه و جدولی که ساختم رو نمیتونم ببینم
نازنین کریمی مقدم۰۸ بهمن ۱۴۰۲، ۱۱:۲۶
درود
چه خطایی میگیرید؟
amir۰۹ دی ۱۴۰۲، ۱۰:۰۱
سلام ببخشید Tkدقیقا چه کاری انجام میده
نازنین کریمی مقدم۰۹ دی ۱۴۰۲، ۱۱:۵۷
درود
tk در اصل یه نماینده از فریمورک tkinter و TK() هم یک تابع برای ساخت پنجره و استفاده از المانهای دکمه و اینپوت و... هست.
پدارم۰۶ دی ۱۴۰۲، ۱۴:۵۵
سلام وقتتون بخیر
چی باید به یک تابع اضافه کنم تا هر وقت اجرا بکنمش مقدار قبلی اینتری حذف بشه، مثلا هر باز مساوی رو زدم صفحه نمایش پاک بشه
نازنین کریمی مقدم۰۹ دی ۱۴۰۲، ۰۸:۰۴
درود
میتونید از تاپیک زیر کمک بگیرید و بجای فانکشن دکمه، در تابع وارد کردن حروف شرط بذارید که اگر مثلا = بود این عملیات انجام بشه:
https://stackoverflow.com/questions/2260235/how-to-clear-the-entry-widget-after-a-button-is-pressed-in-tkinter
Unique_master۰۳ دی ۱۴۰۲، ۱۸:۱۶
سلام
من میخوام برای صفحه ثبت نام وقتی روی گزینه ثبت نام میزنم یه جایی سیو بشه.
چیگار کنم؟
نازنین کریمی مقدم۰۶ دی ۱۴۰۲، ۱۲:۴۲
درود
برای اینکار روشهای مختلفی وجود داره. یا باید در یک فایل جیسون ذخیره کنید و یا یک پایگاه داده.
سپهر۰۱ دی ۱۴۰۲، ۰۷:۰۶
ببخشید چجوری میشه با زدن یک دکمه یک صفحه جدید بوجود بیاریم؟(اگر صفحه از قبل باز شده بود صفحه جدیدی باز نکنه بلکه صفحه اولی رو ببنده)
نازنین کریمی مقدم۰۹ دی ۱۴۰۲، ۱۲:۳۵
درود
برای بازکردن صفحه میتونید از آموزش زیر استفاده کنید و در کنارش یه شرط اضافه کنید که اگر صفحه باز بود، این اتفاق نیفته (یا حداقل قبلی رو ببنده و بعد یکی جدید باز کنه)
https://www.geeksforgeeks.org/open-a-new-window-with-a-button-in-python-tkinter/
محمد۱۲ آذر ۱۴۰۲، ۰۱:۴۹
سلام ببخشید
stringvar
دقیقا چی هست؟
ممنون
نازنین کریمی مقدم۱۸ آذر ۱۴۰۲، ۱۳:۴۹
درود
یک متغیر هست برای نگهداری دادههای رشته ای مثل تکست باکسها و...
ostovari۲۸ آبان ۱۴۰۲، ۰۷:۱۷
باسلام و عرض ادب .
هنگام استفاده از المان label به مشکل برخوردم و میگه label تعریف نشده است.
ممنون میشم اگر راهنماییم کنید.
نازنین کریمی مقدم۰۸ آذر ۱۴۰۲، ۱۰:۴۱
درود
از این تاپیک کمک بگیرید:
https://stackoverflow.com/questions/40439856/labels-not-defined-in-tkinter-app
ایدن۱۹ آبان ۱۴۰۲، ۰۷:۱۷
سلام چگونه میشه ایکون بالای صفحه را عوض کرد ؟
نازنین کریمی مقدم۲۰ آبان ۱۴۰۲، ۰۹:۴۹
درود
با کد: import tkinter as tk root = tk.Tk() root.iconbitmap("myIcon.ico")
karen۱۱ مهر ۱۴۰۲، ۱۹:۲۲
سلام من عین کد رو کپی پیست کردم اما اجرا نمیشه یعنی دکمهها اصلا کار نمیکنه اررور itruptkeyboard داد مشکل چی هست
نازنین کریمی مقدم۲۴ مهر ۱۴۰۲، ۰۵:۵۴
درود
متن دقیق خطا رو میفرستید؟
Erwin۰۴ مهر ۱۴۰۲، ۱۳:۵۲
مرسیی عالی بود فقط ی سوال میشه ابکون برنامه تیکنتر رو تغییر داد؟
نازنین کریمی مقدم۲۲ مهر ۱۴۰۲، ۰۹:۱۴
درود
بله میشه با کد زیر:
import tkinter as tk
root = tk.Tk()
root.iconbitmap("myIcon.ico")
امیر عباس دیواندری۲۹ شهریور ۱۴۰۲، ۱۵:۱۲
با سلام میخواست درون برنامم با استفاده از ماژول pillow یک عکس نمایش بدم و این عکس قراره وقتی نشان داده بشه که کاربر وارد برنامه که شد یک دکمه رو فشار بده بعد وارد یک صفحه دیگه بشه و در اونجا هم کارهایی انجام بده که وارد صفحه دیگه ای بشه و در اون صفحه با فشار دادن دکمه عکس نمایش داده بشه اما این ارور رو دریافت میکنم Image pyimage3 doesn't exists لطفا بگید چیکار کنم و اینکه اصلاpyimage3 چی هست که ارور میده
نازنین کریمی مقدم۲۹ مهر ۱۴۰۲، ۱۰:۵۶
درود
برنامه نمیتونه پنجره رو درست بسازه. راهکار تیک خورده این تاپیک مشکلتون رو حل میکنه:
https://stackoverflow.com/questions/20251161/tkinter-tclerror-image-pyimage3-doesnt-exist
۲۰ شهریور ۱۴۰۲، ۱۱:۳۲
عالی بود. ممنون
یک سوال ، اگر بخوام یکی از btn هام خودش یک منو باشه باید چی کار کنم ؟
سلام نازنین جان
خیلی ممنونم ازت بابت توضیحات خوب و کاملت
امیدوارم همین طور که کار من رو راه انداختی، خدا همیشه کارت رو راه بندازه و مشکلی تو مسیرت نباشه
نازنین کریمی مقدم۱۹ شهریور ۱۴۰۲، ۰۶:۲۴
درود
خواهش میکنم خوشحالم مشکلتون رفع شده، برقرار باشید.
۲۰ مرداد ۱۴۰۲، ۱۶:۱۵
سلام و وقت بخیر
من به مشکلی برخوردم هنگام تایپ در Entry و یا Text و حتی textbox که مستقیم بتونه کاربر برنامه در اون تایپ کنه نمیشه فارسی در کنار انگلیسی به صورت صحیح قرار بگیره مثلا :
سلام دستگاه s4 خراب است رو امتحان کنید یا هر جمله ی فارسی دیگه ای که وسطش انگلیسی داشته باشه دچار مشکل هست میشه کمک کنید خیلی خیلی ممنون میشم
نازنین کریمی مقدم۱۹ شهریور ۱۴۰۲، ۱۰:۵۷
درود
بله باید از <a href="https://stackoverflow.com/questions/66283291/use-arabic-text-with-tkinter" target="_blank" rel="noopener nofollow ugc">کتابخانه ثالث</a> استفاده کنید تا مشکل حل بشه.
۲۷ تیر ۱۴۰۲، ۲۱:۳۸
سلام و عرض ادب و احترام.
وقت بخیر.
کد نهایی قسمت ظاهری ماشین حساب کد اشتباه نوشته شده سه عدد باید تغیر پیدا کنه. کد اجرا کنید متوجه میشید چی میگم .
۰۱ تیر ۱۴۰۲، ۱۳:۵۲
با سلام
یک سوالی برام ایجاد شده
من داخل ساخت پروژه سنگ کاغذ قیچی
نیاز به این دارم وقتی چند بار پشت سر هم یکی از آبجکت هایی مثل سنگو هی بزنم به طور تصادف یبار ببازم ، یه بار ببرم
ولی با ران کردن به یک شکل سابت رندوم میکنه (کتابخانه رندوم) ولی تغییر نمیکنه مگه اینکه یبار ببندی و دوباره باز کنی،
خواستم بدونم چطور میشه این که لیبل اپدیت بشه رو اوکی کرد؟
نازنین کریمی مقدم۰۹ تیر ۱۴۰۲، ۱۹:۳۹
درود
متوجه مشکل نشدم، میخواید که لیبل هربار آپدیت شه؟ یا کلا عدد رندوم مشکل داره و هربار یک چیز رو نشون میده؟
۲۴ خرداد ۱۴۰۲، ۱۶:۴۵
ببخشید خیلی ممنون میشم اگه در رابطه با lambda توضیح کوتاه یا یک مقاله معرفی کنید. با تشکر از شما
نازنین کریمی مقدم۲۵ خرداد ۱۴۰۲، ۱۹:۵۸
درود
پیشنهادتون رو بررسی میکنیم و درصورت امکان مقاله ای رو بهش اختصاص میدیم.
ممنون که با ما همراه هستید.
۲۹ اردیبهشت ۱۴۰۲، ۱۸:۴۰
وقتی در ابتدا دکمه صفر و بعد عدد زده شود مثلا 012 برنامه ارور میده
تو قسمت sumup
نازنین کریمی مقدم۰۲ خرداد ۱۴۰۲، ۰۸:۴۴
درود
برای رفع این خطا میتونید بعد از تبدیل به استرینگ چک کنید که اگر کاراکتر اول 0 بود، کلا اون 0 رو از رشته برداره.
۱۶ اردیبهشت ۱۴۰۲، ۰۹:۲۹
سلام،وقتتون بخیر،من یه ربات برای اعلام لحظه ای ارزها نوشتم با pydroid3 که با گوشی انجام دادم،فقط اینکه تا خود برنامهpydroid رو ران نکنی بری داخل تلگرام وبخواهی از ربات قیمت رو بگیری ربات کار نمیکنه.یا یه چیزی اشتباه تایپ کنی ،دوباره باید بیایی برنامه رو ران کنی بعد بری داخل ربات،میخواستم بدونم چه راه حلی برای این مشکل دارین،که ربات خودش اجرا بشه ،هی من مجبور نباشم برم از pydroid برنامه رو هندل کنم.ممنون
نازنین کریمی مقدم۱۷ اردیبهشت ۱۴۰۲، ۱۴:۳۳
درود
بنده تجربه ای در این زمینه نداشتم اما بد نیست که تاپیک <a href="https://stackoverflow.com/questions/70257026/how-to-make-auto-run-python-file-when-time-is-0600-p-m" target="_blank" rel="noopener nofollow ugc">اجرای خودکار بات در زمان مشخص</a> رو بررسی کنید.
۰۷ اردیبهشت ۱۴۰۲، ۱۷:۳۰
سلام،وقتتون بخیر،بنده یک دفترچه تلفن همراه که شامل اضافه کردن ،جستجوکردن،حذف کردن،ونشان دادن کل مخاطبین هست را بوسیله فایلها نوشتم،و در پنجره tk هم قابل اجرا شدن هست،فقط یه مشکلی که داره وقتی اسم یکی از مخاطبین رو تایپ میکنی برای حذف ان مخاطب حذف میشه.ولی از لاین اول مخاطب رو یه space جلومیزنه،یعنی برای هر حذف کردن یه اسپیس روی مخاطب اولی ایجاد میکنه،ممنون میشم راهنمایی کنید?
نازنین کریمی مقدم۰۸ اردیبهشت ۱۴۰۲، ۱۹:۲۴
درود
شما باید بعد از حذف اون کاربر از لیست مجدد یدور لیست رو به باکس مربوطه تخصیص بدید تا اطلاعاتش به روز بشه.
۰۵ اردیبهشت ۱۴۰۲، ۱۵:۳۰
من مخاطبین خودم رو خط به خط یعنی زیر هم در یک فایلی ذخیره کردم حالا اون فایل رو که در پنجرهtk از طریق لیست باکس میخوام مشاهده کنم همش به هم چسبیده هستن چطور میتونم اون رو خط به خط مشاهده کنم.ممنون میشم راهنمایی کنید.دربدنه تابع این کد رونوشتم.
:()Def show
F=open(path.&#39;r&#39;)
()Deta=f.read
Show_all.insert(END,Deta)
نازنین کریمی مقدم۰۶ اردیبهشت ۱۴۰۲، ۰۶:۰۱
درود
یکی از سادهترین راهها اینه که یک آرایه تعریف کنید. بعد یک حلقه بنویسید که توش با دستور myline = myfile.readline() خط به خط فایل رو میخونه و مقدارش رو در آرایه میریزه. درنهایت با لیست باکس مقادیر رو نشون بدید.
۰۴ اردیبهشت ۱۴۰۲، ۲۰:۳۵
سلام.خسته نباشید،من میخوام در رابط گرافیکیtk ،داخل همون صفحه یا پنجره بتونم چند خط بعد اجرا مشاهده کنم چیکار باید انجام بدم.مثلا
Show_all.config(text=&quot; {} &quot;
.format(name.get())
میخوام مثلا کل مخاطبین رو مشاهده کنم ولی یه دونه بیشتر توی پنجره نشون نمیده.
نازنین کریمی مقدم۰۴ اردیبهشت ۱۴۰۲، ۲۱:۱۶
درود
میتونید از <a href="https://www.tutorialspoint.com/printing-a-list-to-a-tkinter-text-widget" target="_blank" rel="noopener nofollow ugc">لیست در tkinter</a> استفاده کنید.
۰۵ اردیبهشت ۱۴۰۲، ۱۲:۵۲
عذر میخوام لیست را باید کجای کد تعریف کنم
نازنین کریمی مقدم۰۶ اردیبهشت ۱۴۰۲، ۰۵:۵۵
لینکی که در کامنت قبلی دادم رو بررسی کنید متوجه میشید.
۰۴ اردیبهشت ۱۴۰۲، ۱۰:۵۱
سلام من کارم بشدت واجبه لطفا کمکم کنید من این ماشین حسابی که گفتید رو بلدم ولی میشه با ماژول math دکمههای جذر و سینوس و کسینوس رو بگید به خدا کارم خیلی لنگ و فوریه
نازنین کریمی مقدم۰۴ اردیبهشت ۱۴۰۲، ۱۷:۰۹
درود
برای هر عملگر یک دکمه تعریف کنید و در تابع کلیدش از توابع math استفاده کنید.
اگر عبارت sin in python calculator رو سرچ بزنید کدش رو هم میاره.
۱۶ فروردین ۱۴۰۲، ۱۷:۱۵
سلام من برای اینکه متون لیبلها را رنگی کنم باید از چه کدی استفاده کنم و اگر بخواهم برای پس زمینه پنجره کینترم عکس بگذارم باید از چه کدی استفاده کنم و آیا کدی هست که اگر پنجره کینتر باز شد آهنگی پخش شود با ممنون از سایت پر محتویات شما
نازنین کریمی مقدم۱۹ فروردین ۱۴۰۲، ۱۵:۵۸
درود
برای رنگ کافیه در همون پرانتز پراپرتی fg رو اضافه کنید:
<code>abel = tk.Label(root, text="what's my favorite video?",
bg='#fff', fg='#f00', pady=10, padx=10, font=10) .
</code>
<a href="https://www.geeksforgeeks.org/how-to-play-sounds-in-python-with-tkinter/" target="_blank" rel="noopener nofollow ugc">پخش موسیقی در tkinter</a>
<a href="https://www.geeksforgeeks.org/how-to-use-images-as-backgrounds-in-tkinter/" target="_blank" rel="noopener nofollow ugc">ست کردن بکگراند در tkinter</a>
۱۵ فروردین ۱۴۰۲، ۱۶:۴۹
سلام خانم کریمی من یک پروژه دارم که باید انجام بدم وقت زیادی ندارم نهایت ۲ روز دیگه
میتونین کمک کنید
اگه میشه تو پیام رسانی به من پیام بدید ممنون
نازنین کریمی مقدم۱۹ فروردین ۱۴۰۲، ۱۶:۰۴
درود
متاسفانه پیامتون رو دیر دیدم. میتونید در تلگرام با بنده در تماس باشید. اطلاعات در رزومه منتورینگ در صفحه دوره الفبا یا طراحی وب وجود داره.
۱۴ فروردین ۱۴۰۲، ۱۰:۲۵
سلام من یک برنامه با پایتون ساختم دو تا کار میکنه باید چه کار کنم که موقع وارد شدن به برنامه انتخاب کنیم چه کاری انجام بده ؟
نازنین کریمی مقدم۱۵ فروردین ۱۴۰۲، ۰۵:۳۰
درود
باید در صفحه اول دو تا دکمه بگذارید (کار اول - کار دوم) و با شرط چک کنید که رو هر کدوم زد المانهای مربوط به اون کار جایگزین بشه.
۱۲ فروردین ۱۴۰۲، ۰۸:۴۶
سلام من یک پروژه برای قضیه فیثاغورس ساختم اگه بخواهم گرافیکیش کنم طوری مثل این ماشین حساب باشه ولی عملیات ریاضی نداشته باشه و به جایش قضیه فیثاغورس را حل کند باید چه کار کنم
نازنین کریمی مقدم۱۳ فروردین ۱۴۰۲، ۱۳:۰۳
درود
<a href="https://www.codeproject.com/Questions/1241160/Create-a-program-in-Python-that-finds-the-pythagor" rel="nofollow ugc">راهنمای ساخت برنامه حل فیثاغورس با tkinter</a>
۲۳ اسفند ۱۴۰۱، ۱۰:۵۹
سلام دوست عزیز من میخوام پنجره اصلی رو که همون root هست به عنوان پنجره لاگین استفاده کنم و بعد از ورود یوزر و پسورد درست پنجره جدید باز بشه و پنجره لاگین بسته بشه چه کدی بزنم که پنجره اصلی بسته بشه ولی بقیه پنجرهها بسته نشه
نازنین کریمی مقدم۲۴ اسفند ۱۴۰۱، ۰۵:۱۷
درود
میتونید پنجره قبلی رو ببندید و یک پنجره جدید رو باز کنید. <a href="https://stackoverflow.com/questions/67295637/closing-current-window-when-opening-a-new-window-in-tkinter-python" target="_blank" rel="noopener nofollow ugc">نمونه کد بستن و باز کردن پنجره جدید در tkinter </a>
۱۷ اسفند ۱۴۰۱، ۲۱:۳۷
سلام و خسته نباشید.
ببخشید چگونه باید چند فورم...را در کنار هم قرار دهیم؟
نمیدونم متوجه منظورم میشید یا نه!؟
الان Entryها در کنار هم قرار نمیگیرند. بلکه زیر هم قرار میگیرند!
چه کاری انجام دهم؟
نازنین کریمی مقدم۲۰ اسفند ۱۴۰۱، ۰۵:۴۷
درود
<a href="https://stackoverflow.com/questions/56989564/positioning-different-sets-of-entries-next-to-each-other-in-python-tkinter" target="_blank" rel="noopener nofollow ugc">این تاپیک</a> رو ببینید.
۰۱ اسفند ۱۴۰۱، ۱۸:۴۴
سلام میخوام برنامه ای بنویسم انعکاس نور لیزر در آینه را شبیه سازی کنه.
سلام!
من یک برنامه با پایتون نوشتم و فقط میخوام که اون رو در یک قاب نشون بده
مثلا یه صفحه باشه با پس زمینه ای که انتخاب کردم و نام برنامه و عکس برنامه و همشون رو درست کنم و اصلا نه کلیدی نه دکمه ای نباشه و برنامم رو داخل اون قاب اجرا کنم یعنی برنامه ای رو که نوشتم داخل یک صفحه مرتب نشون بده چیکار کنم؟
امیدوارم مطلب رو رسونده باشم
نازنین کریمی مقدم۲۷ بهمن ۱۴۰۱، ۰۰:۰۹
درود
باید با استفاده از overrideredirect کلا فریم و دکمه ای close رو بردارید و بعد خروجی exe بگیرید.
۱۹ بهمن ۱۴۰۱، ۱۱:۲۴
سلام وقت بخیر من یک سوال داشتم و این بود که چطور میشه در لیست باکس عکسهای زیادی رو اضافه کرد
نازنین کریمی مقدم۲۷ بهمن ۱۴۰۱، ۰۰:۱۵
درود
به طور کلی در لیست باکس فقط داده متنی میشه اضافه کرد اما ترفندهایی وجود داره. <a href="https://stackoverflow.com/questions/66622157/how-to-show-images-in-a-listbox-in-tkinter" target="_blank" rel="noopener nofollow ugc">تاپیک تصویر در لیست باکس استک</a> رو بررسی کنید.
۱۱ بهمن ۱۴۰۱، ۰۴:۴۳
با سلام و خسته نباشید ، ببخشید میخواستم یک شکل ترسیم کنم و این شکل رو حول محورش بچرخوشنمش مثل کره زمین و حرکتش،از چه کتابخانه ای و دستوری باید توی پایتون استفاده کنم،ممنون میشم راهنمایی کنید
نازنین کریمی مقدم۱۱ بهمن ۱۴۰۱، ۰۵:۳۲
درود
<a href="https://stackoverflow.com/questions/30269099/creating-a-rotatable-3d-earth" target="_blank" rel="noopener nofollow ugc">تاپیک کره زمین در پایتون</a> رو مطالعه کنید.
۲۸ دی ۱۴۰۱، ۰۸:۵۷
میخوام این برنمرو بنویسم
برنامه دارای یک منو و شامل چند دکمه هست که هرکدوم از این دکمهها به یک پنجره متصل میشن وامکان برگشت به منو در همه یاین پنجرهها باید وجود داشته باشد
جزییات سوال رو بلدم اما نمیدونم چطور باید یه منو وچند تا پنجره، که زیر مجموعه ی منو ی اصلی هستند رو درست کنم
لطفا راهنمایی کنید ممنون میشم
نازنین کریمی مقدم۲۸ دی ۱۴۰۱، ۰۹:۴۶
درود
برای ساخت منو میتونید <a href="https://www.javatpoint.com/python-tkinter-menu" target="_blank" rel="noopener nofollow ugc">آموزش منو در tkinter</a> رو بررسی کنید. مثال دوم فک کنم به چیزی که میخواید نزدیکتر باشه.
۲۵ دی ۱۴۰۱، ۱۹:۱۷
ببخشید اگه تو همین ماشین حساب بخوایم از sinاستفاده کنیم بعد از
def mathsin(): چه چیزی باید قرار بدیم ؟
نازنین کریمی مقدم۲۶ دی ۱۴۰۱، ۱۰:۲۳
درود
کافیه متغیر ورودی رو به تابع پاس بدید و بعد از <a href="https://www.w3schools.com/python/ref_math_sin.asp" target="_blank" rel="noopener nofollow ugc">تابع sin در پایتون</a> استفاده کنید.
۱۴ دی ۱۴۰۱، ۱۹:۱۳
سلام.ببخشید امکان داره با tkinter یک متن چند خطی فارسی رو با ویجت Text از کاربر بگیریم؟ در حالت عادی انگار این ویجت از RTL پشتیبانی نمیکنه. در واقع هنگام تایپ متن فارسی ، متن به صورت LTR در TEXT BOX به نمایش در میآید.
نازنین کریمی مقدم۱۶ دی ۱۴۰۱، ۱۴:۲۵
درود
برای چندخطی که به <a href="https://www.geeksforgeeks.org/how-to-create-a-multiline-entry-with-tkinter/" target="_blank" rel="noopener nofollow ugc">این لینک</a> مراجعه میکنید.
برای فارسی یکم دردسر داره. شاید <a href="https://stackoverflow.com/questions/20306726/right-to-left-text-in-tkinter" target="_blank" rel="noopener nofollow ugc">این لینک</a> و<a href="https://stackoverflow.com/questions/47568835/how-to-use-utf-8-in-python-when-user-input-persian-or-arabic" target="_blank" rel="noopener nofollow ugc"> این لینک</a> کمک تون کنه.
۰۳ دی ۱۴۰۱، ۱۶:۳۷
سلام.ببخشید امکان داره که توی یک برنامه با فریمورک tkinter یک متن چند خطی رو از کاربر بگیریم؟
نازنین کریمی مقدم۰۴ دی ۱۴۰۱، ۰۹:۰۴
درود
<a href="https://www.plus2net.com/python/tkinter-text.php" target="_blank" rel="noopener nofollow ugc">این راهنما</a> رو بررسی کنید احتمالا براتون مفید باشه.
۱۵ آذر ۱۴۰۱، ۱۸:۱۶
من میخوام یک برنامه بنویسم که یک جدول داشته باشه و اعداد اول اونجا باشه با اعداد مرکب و کاربر به ازای هر عدد اول درسته که انتخاب میکنه (منظور اعداد اول) امتیاز میگیره
نازنین کریمی مقدم۱۶ آذر ۱۴۰۱، ۱۶:۵۳
درود
برای منطق اینکه عدد اول هست یا نه، میتونید از <a href="https://7learn.com/blog/python-program-to-check-prime-number" rel="noopener nofollow" target="_blank">برنامهی تشخیص عدد اول در پایتون - چگونه با پایتون برنامه بنویسیم؟</a> کمک بگیرید.
۱۴ آذر ۱۴۰۱، ۰۷:۰۶
سلام خانم کریمی وقت بخیر
من میخوام یک برنامه با tk بنویسم که دادههای یک فایل اکسل رو بگیره و وقتی کاربر داده ی از یک ستون خاص رو سرچ میکنه، بقیه ی دادههای اون سطر براش نمایش داده بشه. آیا لینک پروژه ی کاملی دارید که ببینم و ازش یاد بگیرم؟ متشکرم
نازنین کریمی مقدم۱۵ آذر ۱۴۰۱، ۱۳:۲۸
درود
باید با کتابخانه مخصوص اکسل و پانداز کار کنید. <a href="https://www.freecodecamp.org/news/how-to-create-read-update-and-search-through-excel-files-using-python-c70680d811d4/" target="_blank" rel="noopener nofollow ugc">این لینک</a> میتونه کمک تون کنه.
۰۵ آذر ۱۴۰۱، ۱۹:۴۱
رو اندروید اجرا میشه؟
نازنین کریمی مقدم۰۵ آذر ۱۴۰۱، ۲۱:۲۲
درود
درحالت عادی خیر و بهتره به سراغ kivy برید.
۲۶ آبان ۱۴۰۱، ۲۱:۲۷
سلام خیلی ممنون از مطلب آموزندتون من میخوام ررنگ لیبل با تغییر رنگ محصول عوض بشه مثلا محصول رنگ آبی داره رنگ لیبل هم ابی بشه یا اگر محصول طعم کاکائو داره عکس کاکائو تو لیبل باشه چکار باید بکنم ممنون
نازنین کریمی مقدم۲۸ آبان ۱۴۰۱، ۰۹:۵۳
درود
راهی ندارید جز اینکه به محصولات تون یک تگ رنگ بدید و موقع ست کردن رنگ لیبل اطلاعات رو از اون تگ بگیرید.
۲۳ آبان ۱۴۰۱، ۰۹:۲۰
بله متظور ارتباط دادن تابع رسم خط مثلا ضخامت و طول خط با تابع scale و canvas تکینتر است. یعنی چطور ضخامت خط با جابجایی ابزارک گرافیکی افزایش پیدا میکند. چه تابعی و دستوری باید نوشته شود
نازنین کریمی مقدم۲۳ آبان ۱۴۰۱، ۱۰:۴۵
درود
باید از ویژگی width استفاده کنید:
my_canvas.create_line(50,50, 200,400, width=20, fill="dark green").
۲۱ آبان ۱۴۰۱، ۱۹:۱۷
سلام
برای ارتباط دادن تابع scale در tkinter به تابع ایجاد خط، چه تابعی رو باید تعریف کرد؟ یعنی چطور میشه با ابزارک گرافیکی طول یک خط رو کم و زیاد کرد؟
ممنون
w = Scale(window, from_=0, to=100
cs.create_line(a,b,c,d
نازنین کریمی مقدم۲۲ آبان ۱۴۰۱، ۰۵:۲۷
درود
منظورتون تنظیم کلفتی یک خط هست؟
۱۳ آبان ۱۴۰۱، ۱۸:۱۰
سلام
چطوری نرم افزاری که ساختیم را فارسی و راست چین کنیم؟
نازنین کریمی مقدم۱۵ آبان ۱۴۰۱، ۰۶:۰۵
درود
از <a href="https://stackoverflow.com/questions/20306726/right-to-left-text-in-tkinter" rel="nofollow ugc">این لینک</a> استفاده کنید.
۲۹ مهر ۱۴۰۱، ۱۵:۰۰
سلام و درود من یه پروژه یابنده اعداد اول دارم
میخواستم بدونم چجوری میتونم اونو به ماشین حساب اضافه کنم؟
ممنونم از شما
نازنین کریمی مقدم۲۹ مهر ۱۴۰۱، ۱۸:۰۳
درود
کافیه یه دکمه رو برای تشخیص عدد اول درنظر بگیرید. مثلا علامت ¡. اگر کاربر یک عدد وارد کرد و بعد روی این دکمه زد، برنامه ای که ساختید در قالب تابع صدا زده بشه و در خروجیش ببینه که عدد واردشده جزو لیست خروجی اون تابع هست یا نه و براساس اون 0 یا 1 برگردونه.
۲۹ شهریور ۱۴۰۱، ۱۱:۳۷
سلام
من یه سوال داشتم
چجوری میشه Label در پنجره نمایش داده بشه و چند ثانیه بعد label در پنجره حذف شود؟ میشه بگید ممنونم
نازنین کریمی مقدم۲۹ شهریور ۱۴۰۱، ۱۲:۴۴
درود
لیبل رو قرار میدید و در تایمر<a href="https://stackoverflow.com/questions/27654494/hide-label-when-a-button-is-clicked-in-python" target="_blank" rel="noopener nofollow ugc"> این تابع</a> رو مینویسید تا بعد از مدت موردنظر ناپدید بشه.
۲۴ شهریور ۱۴۰۱، ۲۰:۲۹
سلام ببخشید من خواستم یک برنامه بنویسم که در آن زمانی که در یک متغیر اسم cal آمد ماشین حساب باز شود ولی وقتی آن باز میشود باتنها کار نمیکنند. چگونه کاری کنم که باتنها کار کنند
سلام..چطوری میتونم توی تینکر و با توابع این دستور رو بدم که برای مثال پنجره لاگین رو ببنده و پنجره دلخواه رو باز کنه ؟
نازنین کریمی مقدم۰۸ شهریور ۱۴۰۱، ۱۱:۲۵
درود
برای بستن پنجره از win.destroy() استفاده کنید و برای بازکردنش<a href="https://www.geeksforgeeks.org/open-a-new-window-with-a-button-in-python-tkinter/" target="_blank" rel="noopener nofollow ugc"> این راهنما</a> رو مطالعه فرمایید.
۰۳ شهریور ۱۴۰۱، ۰۹:۰۹
سلام عالی بود
ولی وقتی بخواهیم از Text استفاده کنیم چه چیزی را باید import کرد؟
نازنین کریمی مقدم۰۵ شهریور ۱۴۰۱، ۰۴:۰۳
درود
شما اگر یک شی رو به صورت import tkinter as tk ایمپورت کنید به تمامی المانها مثل دکمه و تکست و... دسترسی خواهید داشت.
۰۱ مرداد ۱۴۰۱، ۰۵:۱۰
سلام
خیلی مفید بود
ممنونم
۱۷ فروردین ۱۴۰۱، ۰۴:۰۲
خیلیییییییییییییییییییی ممنون! از تباهی آزاد شدیم:)))))))))))))))))
۱۱ اسفند ۱۴۰۰، ۰۶:۵۳
عالی بود ممنون
۱۱ اسفند ۱۴۰۰، ۰۵:۰۹
سلام
من میخواهم در تابع یک پنجره تکینتر جدید باز کنم و در آن پنجره یک عکس باز کنم. ولی ارور میدهد.
یه پایتون کاری گفت که مشکل پایتون هست و به جای Tk باید از چیز دیگری استفاده کنیم.ولی یادش نمیامد که چی بود.
شما میتوانید کمک کنید؟
نازنین کریمی مقدم۱۱ اسفند ۱۴۰۰، ۱۰:۳۳
سلام
یعنی پنجره دوم رو باز کنید؟
۱۳ بهمن ۱۴۰۰، ۱۳:۱۳
با سلام. ممنون از پستتون واقعا خوب بود. راستش من میخواستم که عنصر Text ام قابل کپی بودن باشه. راهنمایی کنید ممنون میشم.
نازنین کریمی مقدم۱۳ بهمن ۱۴۰۰، ۱۳:۱۸
سلام
کافیه <a href="https://stackoverflow.com/questions/1602106/in-pythons-tkinter-how-can-i-make-a-label-such-that-you-can-select-the-text-wi" target="_blank" rel="noopener nofollow ugc">پاسخ پذیرفته شده این پست</a> رو مطالعه کنید.
۱۲ بهمن ۱۴۰۰، ۱۵:۵۴
سلام خیلی خوب بود
فقط یه سوال چرا داخل عملگرها و اعداد از lambda استفاده کردیم و چرا داخل تساوی استفاده نکردیم؟
نازنین کریمی مقدم۱۳ بهمن ۱۴۰۰، ۱۲:۵۶
سلام
از lambda اغلب برای ساخت توابع بینام درون خطی استفاده میشه به این صورت:
<code>x = lambda a : a + 10
print(x(5))</code>
یکی از کاربردهایی که داره پاس دادن توابع بین المان گرافیکی و منطق برنامه هست که ما تو این آموزش ازش استفاده کردیم.
استفاده از lambda بستگی به خودتون داره اما تا حد امکان بهتره فقط جایی که نیاز هست استفاده بشه تا خوانایی کد بالا بره و بیخود بار پردازشی رو زیاد نکنیم.
۲۳ دی ۱۴۰۰، ۰۳:۱۷
سلام خسته نباشید
من یک پنجره رو باز کردم و تغییراتی رو روش انجام دادم ، فقط میخوام یکی از دکمههای من با کمی تاخیر نمایش داده بشه ، زمانی هم که time.sleep استفاده میکنم پنجره به همون مقدار دیر باز میشه چون .mainloop در آخر هست . ممنون میشم منو راهنمایی کنید.
سلام ، ممنون از توضیحاتتون، خیلی عالی بود
سوالی که من داشتم اینه که؛ من یک رابط گرافیکی نوشتم که کار تبدیل واحد انجام میده، کدهای محاسباتی رو در یک فایل جدا و یک کلاس تعریف کردم و بعد در کدهای رابط گرافیکی import کردم ، ولی با این ارور مواجه شدم:
tkinter.TclErorr: wrong #arge: should be &quot;.!entry2 insert index text&quot;
لطف میکنید راهنمایی کنید که مشکل کجاست؟
نازنین کریمی مقدم۱۷ دی ۱۴۰۰، ۱۲:۵۷
سلام
این ارور معمولا به دلیل اشتباه پاس دادن آرگومانهای درون تابع insert ایجاد میشه.
در اینجا اون آرایه یا لیستی که به عنوان آرگومان دوم تابع پاس دادید، داره مقدار none برمیگردونه و همون باعث ایجاد خطا میشه.
وصی۱۱ آذر ۱۴۰۰، ۰۷:۲۰
به شدت عالی بود چون من دنبال تعریف کدهای این ماشین حساب میگشتم موضوع برام به طور کامل حل و فصل شد
Nazanin KarimiMoghaddam۱۳ آذر ۱۴۰۰، ۰۶:۲۰
ممنون که با ما همراه هستید :)
sanam۳۰ آبان ۱۴۰۰، ۰۹:۵۷
سلام وقت بخیر..
تشکر آموزش بسیار بود
mhe۲۷ آبان ۱۴۰۰، ۱۷:۲۹
خیلی ممنون
Nazanin KarimiMoghaddam۲۹ آبان ۱۴۰۰، ۰۷:۰۷
ممنون بابت همراهی تون :)
AmirHossein۱۱ مهر ۱۴۰۰، ۰۵:۱۳
تشکر
majid۳۱ شهریور ۱۴۰۰، ۰۹:۲۳
سلام. بسیار عالی بود.
لطفا بفرمایید چرا بعضی وقتها برای import کردن باید فقط نوشت import tkinter بعضی جاهای دیگه باید از from استفاده کرد؟
نازنین کریمی مقدم۳۱ شهریور ۱۴۰۰، ۱۰:۵۳
درود
وقتی فقط import tkinter رو مینویسیم یعنی هرچی ماژول تو tkinter هست رو صدا میزنیم و با این جمله برابره: from tkinter import *
اما بعضی وقتها هست که از فقط از یک یا چند ماژول اونم به تعداد دفعات بسیاری در کد استفاده میکنیم، برای اینکه پرفورمنس بره بالا صرفا اونها رو با from import فراخوانی میکنیم.
مسعود۰۵ فروردین ۱۴۰۰، ۱۰:۴۰
سلام ممنون بله حل شد تا برم ادامه رو کارکنم ....
خدا کنه دیگه با مشکل برنخورم امیدوارم سال خوبی براتون باشه خداوند اجر کمک کردن به دیگران رو با موفقیتها ی بزرگ در اینده نصیب شما کنه
نازنین کریمی مقدم۰۵ فروردین ۱۴۰۰، ۱۴:۱۹
خداروشکر خواهش میکنم.
ایشالا سال جدید برای همگی به خصوص برنامه نویسان پر از موفقیت و سلامتی باشه :)
مسعود۰۴ فروردین ۱۴۰۰، ۱۷:۳۹
امکانش هست پاسختون رو برام ایمیل کنید که از طریق ایمیل سوالاتم رو بپرسم چون دوباره تو خطهای بعدی با ارور مواجه شدم من نمیدونم چشه مطابق دستورات بالا مینویسم ولی ارور میده تا حاللا موفق شدم اسم پنجره رو بنویسم ولی باز این خط رو ارور میده
label = Label(root, text ="Hello World !").pack() #===== مرحله 3
ممنون
نازنین کریمی مقدم۰۴ فروردین ۱۴۰۰، ۲۳:۳۸
مشکل اینه که با منطقی که کد داره برای شما درست عمل میکنه، شما به یک اشاره گر یا نماینده برای فراخوانی تمامی توابع نیاز دارید. مثلا در خط قبل شما از کلمه tkinter به عنوان نماینده استفاده کردید و گفتید که بیاد تابع Tk این نماینده رو اجرا کنه. برای همین در ادامه این آموزش هرجایی که از توابع کتابخانه tkinter استفاده کردیم، شما باید قبلش یک tkinter. بنویسید. برای مثال مرحله سه برای شما به این صورت میشه:
<code>label = tkinter.Label(root, text ="Hello World !").pack() </code>
اگر باز سوال یا مشکلی داشتید اشکالی نداره، از همین بخش سوالاتتون رو بپرسید. هم براتون ایمیل میشه، هم کمکی به بقیه دوستانی که این مشکل رو دارند میشه. چون طبق سیاستهای سایت نمیتونم ایمیل خودم رو باهاتون اشتراک بگذارم.
مسعود۰۴ فروردین ۱۴۰۰، ۱۷:۰۰
سلام فکر کنم مشکلم حل شد ممنون از راهنمایی باید این دستور رو مینوشتم
()root=tkinter.Tk
نازنین کریمی مقدم۰۴ فروردین ۱۴۰۰، ۲۳:۳۰
بازم سلام :)
ببینید ورژن پایتون شما 3 هست و اگه اینطوری رفع شده، احتمالا اینجوری کتابخانه رو ایمپورت کردید:
<code>import tkinter</code>
درصورتی که اگر به همون شکلی که تو مقاله گفتیم، یعنی به صورت زیر ایمپورت کنید نباید مشکلی براتون پیش بیاد:
<code>from tkinter import * </code>
اما باز خداروشکر که مشکلتون رفع شد.
مسعود۰۴ فروردین ۱۴۰۰، ۱۶:۱۰
سلام تشکر از توضیحاتون برای یه لحظه خوشحال شدم که حل شده مشکلم اما همونطور که میبینید بازم خطا داد
Python 3.8.5 (tags/v3.8.5:580fbb0, Jul 20 2020, 15:57:54) [MSC v.1924 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>> import tkinter
>>> tkinter._test()
>>> root = Tk()
Traceback (most recent call last):
File "", line 1, in
root = Tk()
NameError: name 'Tk' is not defined
>>>
مسعود۰۴ فروردین ۱۴۰۰، ۰۸:۳۲
سلام و تشکر از پاسخگویی به موقع شما من پس ار ایمپورت کردن tkinter برای اطمینان از نصب اون رو فراخوانی کردم و پنجره مربوط بهش باز شدد ول دستور نام گذاری که میدم میگه همچین نامی نیست اگه پایتون رو کامل حذف کنم و دوباره نصب کنم مشکلم حل میشه؟ این یکی و ایا شما کلاسی دارید که بتونم ان لاین درش شکرت کنم و خودئون هم سوالاتمون رو جواب بدید ممنون
نازنین کریمی مقدم۰۴ فروردین ۱۴۰۰، ۱۳:۵۸
خواهش میکنم.
پس اینطور که میفرمایید مشکل از خوندن کتابخانه نیست.
من دوباره متن خطاتون رو بررسی کردم. اگر اشتباه نکنم، روی اون دستوری که دارید خطا میگیرید، TK رو نمیشناسه، اما دقت کنید که شما باید از k کوچک استفاده کنید و فقط T بزرگ باشه. یعنی بشه: Tk نه TK
اینو اصلاح کنید احتمالا مشکلتون رفع میشه. اگر نشد، بگید تا من یسری راهکار دیگه هم بدم، نهایتا راهکار آخرمون نصب دوباره باشه:)
نازنین کریمی مقدم۰۴ فروردین ۱۴۰۰، ۱۴:۰۲
درمورد دوره پایتون هم یه دوره متخصص پایتون برای وب داریم. البته مدرس و پشتیبانی خودم نیستم و استاد حرفه ایتر از خودمه.
در این دوره ما از صفر تا صد <a href="https://7learn.com/course/python-web-expert" rel="noopener" target="_blank">آموزش پایتون</a> دادیم و چون در عنوان متخصص وب هم ذکر شده، فریمورک جنگو رو هم آموزش دادیم. اما اگر صرفا پایتون رو برای استفادههای <a href="https://7learn.com/blog/what-is-ai" rel="noopener" target="_blank">هوش مصنوعی</a> و برنامه نویسی معمولی میخواید یاد بگیرید، میتونید تا سر <a href="https://7learn.com/course/python-web-expert" rel="noopener" target="_blank">آموزش جنگو</a> دوره رو دریافت کنید. شرایط پشتیبانی دوره هم در صفحه توضیحاتش اومده.
مسعود۰۳ فروردین ۱۴۰۰، ۱۵:۳۶
سلام مجدد لطفا راه حل مشکلم رو برام ایمل کنبد ممنون میشم
مسعود۰۳ فروردین ۱۴۰۰، ۱۵:۳۳
سلام سال نو مبارک با تشکر از آموزش جالبتان من در حال یادگیری پایتون هستم متاسفانه در خط سوم که نام گذاری برای پنجره هست پیغامی مبنی بر عدم شناخت نام اعلام میشه و دیگه نمیتونم کارکنم خواستم بدونم چطوری میتونم حلش کنم root = Tk() # ====================== مرحله 2 در اینجا این پیام میاد
E:\pytonme\untitled3\Scripts\python.exe E:/pytonme/untitled3/3.py
Traceback (most recent call last):
File "E:/pytonme/untitled3/3.py", line 3, in
root = TK()
NameError: name 'TK' is not defined
Process finished with exit code 1 تشکر
نازنین کریمی مقدم۰۳ فروردین ۱۴۰۰، ۲۲:۵۰
درود.
شما احیانا یک فایل به صورت دستی با نام tkinter نساختید؟ چون ممکنه هنگام ایمپورت اون رو تو برنامه بیاره و به همین دلیل توابع رو نشناسه.
PF۰۳ فروردین ۱۴۰۰، ۰۷:۳۲
عالیی مخصوصا ماشین حساب
سالار۱۹ بهمن ۱۳۹۹، ۰۴:۱۸
سلام مجدد
خیلی ممنونم بله در مورد منبع که حتما باید باشه بازهم تشکر از لطف شما
سالار۱۸ بهمن ۱۳۹۹، ۱۷:۲۸
سلام وقت بخیر ممنونم از مطالب آموزشی شما
من در حال اماده سازی آموزش پایتون هستم برای درس مباحث ویژه برنامه نویسی برای دنشجویان دانشگاه تقریبا در حال اتمام هستم یک بخش هم به همین ماژول Tkinter اختصاص دادم و یک منوی گرافیکی کار کردم
خواستم اگر مشکلی نباشه همین ماشین حساب شما رو هم بعنوان یک کار عملی در اسلایدهام اضافه کنم تا دانشجوها بیشتر و بهتر با این ماژول آشنا بشند و کار کنند
اگر مشکلی نداشته باشه ممنون میشم بهم اطلاع بدید
نازنین کریمی مقدم۱۸ بهمن ۱۳۹۹، ۲۱:۳۶
درود. ممنون که با ما همراه هستید.
اگر با ذکر نام منبع باشه موردی نداره :) موفق باشید.
مهدیار اسماعیلی۰۹ دی ۱۳۹۹، ۱۴:۱۹
خیلی ممنون من با استفاده از این سایت تونستم پایتون یاد بگیرم و تمرین کنم فقط دستوری هست که این صحفه گرافیکی را به برنامه یا همانexe تبدیل کند؟
عبدالرضا مولایی۱۰ دی ۱۳۹۹، ۰۸:۱۱
سلام دوست عزیز،
خوشحالیم مقالات آموزشی ما تونسته به شما در مسیر یادگیری پایتون کمک کنه.
بله امکانش هست... با کتابخانههای فذاوانی که پایتون پشتیبانی میکنه، هر کاری امکانپذیر است مثل همین تبدیل فرمت py به exe... شما میتونید از کتابخانه ی auto-py-to-exe استفاده کنید.. میتونید روش نصب و نحوه ی استفاده از این ماژول را ازطریق <a href="https://pypi.org/project/auto-py-to-exe/" rel="nofollow ugc">Converts .py to .exe</a> مشاهده کنید.
شروع رایگان یادگیری برنامه نویسی
کلیک کنید 👇
دوره الفبای برنامه نویسی با هدف انتخاب زبان برنامه نویسی مناسب برای شما و پاسخگویی به سوالات متداول در شروع یادگیری موقتا رایگان شد: