ورود

View Full Version : مدیریت چند پنچره



MSN_Issue
پنج شنبه 28 مرداد 1395, 11:01 صبح
سلام دوستان
من دارم یه برنامه مینویسم که یه پنجره ی اصلی حاوی چندتا دکمه داره.
با زدن هر دکمه یه پنجره دیگه باز میشه که یه سری کارا توش انجام میشه. میخواستم ببینم چیکار باید بکنم که تا وقتی پنجره دومی بسته نشده کاربر نتونه برگرده سر پنجره اول و دیگه اینکه قبل و بعد از باز شدن پنجره دوم یه سری کارا به ترتیب انجام بشه...
کد نمونه ای که استفاده کردم رو میذارم:



import Tkinter as tk

class Demo1:
def __init__(self, master):
self.master = master
self.frame = tk.Frame(self.master)
self.button1 = tk.Button(self.frame, text = 'New Window', width = 25, command = self.new_window)
self.button1.pack()
self.frame.pack()
def new_window(self):
print 1
self.newWindow = tk.Toplevel(self.master)
print 2
self.app = Demo2(self.newWindow)
print 3

class Demo2:
def __init__(self, master):
self.master = master
self.frame = tk.Frame(self.master)
self.quitButton = tk.Button(self.frame, text = 'Quit', width = 25, command = self.close_windows)
self.quitButton.pack()
self.frame.pack()
def close_windows(self):
self.master.destroy()

def main():
root = tk.Tk()
app = Demo1(root)
root.mainloop()

if __name__ == '__main__':
main()



مثلا توی این کد توی متد new_window میخوام که 1 و 2 چاپ بشه ولی 3 تا وقتی که پنجره دومیه بسته نشده چاپ نشه و بعد از بسته شدن اون چاپ بشه. اما به محض اجرای متد هر سه چاپ میشن!!

ممنون میشم راهنماییم کنین

SZsXsZS
شنبه 30 مرداد 1395, 11:01 صبح
چیکار باید بکنم که تا وقتی پنجره دومی بسته نشده کاربر نتونه برگرده سر پنجره اول
خب بنظرم یک روشش modal کردن پنجره دوم نسبت به پنجره اوله.
کدهاش یه چیزی توی این مایه هاست:

self.transient(parent)
self.grab_set()
self.wait_window(self)
البته این کدها رو صرفا گذاشتم راحت بتونی سرچ کنی و مطالب مورد نظرت رو پیدا کنی، وگرنه این کدها لزوما کامل و روشن نیست.
توی گوگل چیزهایی مثل python how to make a window modal رو سرچ کن.

MSN_Issue
یک شنبه 31 مرداد 1395, 08:57 صبح
ممنون
با Wait_window مشکلم حل شد