Форум сайта python.su
Подскажите почему стали новые окна, те что вызывает Button уходить на задний план?
До переделки кода в классы, все было нормально…
Как поправить?
P.S. не ругайте за бордак..)
#!/usr/bin/env python # -*- coding: utf-8 -*- # By R.Suzi # $Id: widgets.py,v 4.0 2001/11/04 12:43:09 rnd Exp $ """ """ import MySQLdb import string import PyQt4 import sqlalchemy #from Tkinter import * import Tkinter def mysql(event): b_connection_string = 'mysql://user:password@localhost/db_name' user = "root" db = create_engine(db_connection_string) for row in db.execute("select Permissions from users where Name = \"%s\""%(user)): result.append(str(row)) class start(): def Start(self): print "g" class start2(): def Start2(self): print "g" class start3(): def Start3(self): print "g" class start4(): def Start4(self): print "g" root = Tkinter.Tk() root.title("Сведения") # соединяемся с базой данных #db = MySQLdb.connect(host="localhost", user="root", passwd="107796201647", db="pochta", charset='utf8') # формируем курсор #cursor = db.cursor() Label1 = Tkinter.Label(root, width=6, height=0, text="увии") Label1.grid(row=1, column=0) frame = Tkinter.Frame(root) frame.grid() ###### framespravka = Tkinter.Frame(root) framespravka.grid() ###### #окно газеты class _gazeti_(): def gazeti(self) : global root2 root2 = Tkinter.Tk() root2.focus_set() root2.title("Газеты") frame4 = Tkinter.Frame(root2) frame4.grid() Label2 = Tkinter.Label(frame4, width=6, height=0, text="увии") Label2.grid(row=0, column=0) global entry1 entry1 = Tkinter.Entry(frame4, width=10) entry1.pack() entry1.grid(row=1, column=0) global poisk1 poisk1=entry1.get() btng = Tkinter.Button(frame4, text="Поиск") btng.grid(row=1, column=2) btng.bind("<Button-1>", start()) gaz=_gazeti_() class _otdelenia_(): def otdelenia(event) : global root3 root3 = Tkinter.Tk() root3.title("Отделения") frame_otdel = Tkinter.Frame(root3) frame_otdel.grid() Label3 = Tkinter.Label(frame_otdel, width=6, height=0, text="увии") Label3.grid(row=0, column=0) global entry2 entry2 = Tkinter.Entry(frame_otdel, width=10) entry2.pack() entry2.grid(row=1, column=0) global poisk2 poisk2=entry2.get() btng = Tkinter.Button(frame_otdel, text="Поиск") btng.grid(row=1, column=2) btng.bind("<Button-1>", start2) Label3_1 = Tkinter.Label(frame_otdel, width=6, height=0, text="увии222") Label3_1.grid(row=3, column=0) global entry2_1 entry2_1 = Tkinter.Entry(frame_otdel, width=10) entry2_1.pack() entry2_1.grid(row=4, column=0) global poisk2_1 poisk2_1=entry2_1.get() btng2 = Tkinter.Button(frame_otdel, text="Поиск") btng2.grid(row=4, column=2) btng2.bind("<Button-1>", start3) class _tipografia_(): def tipografia(event) : global root4 root4 = Tkinter.Tk() root4.title("Отделения") frame_tip = Tkinter.Frame(root4) frame_tip.grid() Label_tip = Tkinter.Label(frame_tip, width=6, height=0, text="увии") Label_tip.grid(row=0, column=0) global entry_tip entry_tip = Tkinter.Entry(frame_tip, width=10) entry_tip.pack() entry_tip.grid(row=1, column=0) btn_tip = Tkinter.Button(frame_tip, text="Поиск") btn_tip.grid(row=1, column=2) btn_tip.bind("<Button-1>", start4) #####неиспользуемые def spravka(event): root = Tkinter.Tk() root.title("Справка") def showDialog2(self): self.label2.setText(u'<b>FFFUUUU</b>') ####################### #txt = Text(frame, width=30, height=6) #txt.grid(row=1, column=0) #txt.insert(AtInsert(), "Text. "*20) gaz=_gazeti_() #главное окно кнопки btn = Tkinter.Button(frame, text="Газеты") btn.grid(row=0, column=1) btn.bind("<Button-1>", gaz.gazeti()) ###### btn2= Tkinter.Button(frame, text="Отделения") btn2.grid(row=0, column=2) btn2.bind("<Button-1>", _otdelenia_.otdelenia) ###### btn3= Tkinter.Button(frame, text="Типографии") btn3.grid(row=0, column=3) btn3.bind("<Button-1>", _tipografia_.tipografia) ###### btn4= Tkinter.Button(framespravka, text="Справка") btn4.grid(row=0, column=4) #btn4.pack(side = 'top') btn4.bind("<Button-1>", showDialog2) ###### root.mainloop() #from wx.lib import sheet #import wx # End of widgets.py
Офлайн
Код взорвал мозг в клочья.
Что Вы хотите получить.
Неее. Давайте еще проще.
Есть окно с кнопками. Что должно просиходить, когда я нажимаю на кнопку?
P.S. ООП для GUI применятеся не так
Отредактировано 4kpt_II (Апрель 1, 2014 15:41:36)
Офлайн
4kpt_II
Вот так сейчас:
https://i1.inmac.org/042014/7af1990db12fa962.png
А вот так надо:
https://i1.inmac.org/042014/67ee08d133f9c4f9.png
Т.е что бы новое окно по кнопке выскакивало над старым…
Отредактировано Strelok-den (Апрель 1, 2014 16:24:56)
Прикреплённый файлы: prav.png (155,2 KБ)
Офлайн
Смотрите. Сделал программу, которая при нажатии кнопки открывает новое окно:
import Tkinter # def create(event): new_top = Tkinter.Toplevel() # root = Tkinter.Tk() # button = Tkinter.Button(root, text="create new window") button.pack() button.bind("<Button-1>", create) # root.mainloop()
Отредактировано 4kpt_II (Апрель 1, 2014 16:39:18)
Офлайн
4kpt_II
Программа работает.., но окно new_top все равно под root
Офлайн
Проблему решает:
new_top.focus_force()
Отредактировано 4kpt_II (Апрель 1, 2014 19:26:57)
Офлайн
4kpt_II
Проблему не решило( focus.set()-тоже не решил..
Все равно под начальным окном создается…
Идеи?
Офлайн
Я разве писал focus.set()?
Код программы покажите.
Отредактировано 4kpt_II (Апрель 1, 2014 20:25:50)
Офлайн
4kpt_II
Нет не писали) я просто проверил)
#!/usr/bin/env python # -*- coding: utf-8 -*- # By R.Suzi # $Id: widgets.py,v 4.0 2001/11/04 12:43:09 rnd Exp $ """ """ import MySQLdb import string import PyQt4 import sqlalchemy #from Tkinter import * import Tkinter def mysql(event): b_connection_string = 'mysql://user:password@localhost/db_name' user = "root" db = create_engine(db_connection_string) for row in db.execute("select Permissions from users where Name = \"%s\""%(user)): result.append(str(row)) class start(): def Start(self): print "g" class start2(): def Start2(self): print "g" class start3(): def Start3(self): print "g" class start4(): def Start4(self): print "g" root = Tkinter.Tk() root.title("Сведения") # соединяемся с базой данных #db = MySQLdb.connect(host="localhost", user="root", passwd="107796201647", db="pochta", charset='utf8') # формируем курсор #cursor = db.cursor() Label1 = Tkinter.Label(root, width=6, height=0, text="увии") Label1.grid(row=1, column=0) frame = Tkinter.Frame(root) frame.grid() ###### framespravka = Tkinter.Frame(root) framespravka.grid() ###### #окно газеты class _gazeti_(): def gazeti(self) : global root2 new_top = Tkinter.Toplevel() frame4 = Tkinter.Frame(new_top) frame4.grid() Label2 = Tkinter.Label(frame4, width=6, height=0, text="увии") Label2.grid(row=0, column=0) global entry1 entry1 = Tkinter.Entry(frame4, width=10) entry1.pack() entry1.grid(row=1, column=0) global poisk1 poisk1=entry1.get() btng = Tkinter.Button(frame4, text="Поиск") btng.grid(row=1, column=2) btng.bind("<Button-1>", start()) gaz=_gazeti_() class _otdelenia_(): def otdelenia(event) : global root3 root3 = Tkinter.Tk() root3.title("Отделения") frame_otdel = Tkinter.Frame(root3) frame_otdel.grid() Label3 = Tkinter.Label(frame_otdel, width=6, height=0, text="увии") Label3.grid(row=0, column=0) global entry2 entry2 = Tkinter.Entry(frame_otdel, width=10) entry2.pack() entry2.grid(row=1, column=0) global poisk2 poisk2=entry2.get() btng = Tkinter.Button(frame_otdel, text="Поиск") btng.grid(row=1, column=2) btng.bind("<Button-1>", start2) Label3_1 = Tkinter.Label(frame_otdel, width=6, height=0, text="увии222") Label3_1.grid(row=3, column=0) global entry2_1 entry2_1 = Tkinter.Entry(frame_otdel, width=10) entry2_1.pack() entry2_1.grid(row=4, column=0) global poisk2_1 poisk2_1=entry2_1.get() btng2 = Tkinter.Button(frame_otdel, text="Поиск") btng2.grid(row=4, column=2) btng2.bind("<Button-1>", start3) class _tipografia_(): def tipografia(event) : global root4 root4 = Tkinter.Tk() root4.title("Отделения") frame_tip = Tkinter.Frame(root4) frame_tip.grid() Label_tip = Tkinter.Label(frame_tip, width=6, height=0, text="увии") Label_tip.grid(row=0, column=0) global entry_tip entry_tip = Tkinter.Entry(frame_tip, width=10) entry_tip.pack() entry_tip.grid(row=1, column=0) btn_tip = Tkinter.Button(frame_tip, text="Поиск") btn_tip.grid(row=1, column=2) btn_tip.bind("<Button-1>", start4) #####неиспользуемые def spravka(event): root = Tkinter.Tk() root.title("Справка") def showDialog2(self): self.label2.setText(u'<b>FFFUUUU</b>') ####################### #txt = Text(frame, width=30, height=6) #txt.grid(row=1, column=0) #txt.insert(AtInsert(), "Text. "*20) gaz=_gazeti_() #главное окно кнопки btn = Tkinter.Button(frame, text="Газеты") btn.grid(row=0, column=1) btn.bind("<Button-1>", gaz.gazeti()) ###### btn2= Tkinter.Button(frame, text="Отделения") btn2.grid(row=0, column=2) btn2.bind("<Button-1>", _otdelenia_.otdelenia) ###### btn3= Tkinter.Button(frame, text="Типографии") btn3.grid(row=0, column=3) btn3.bind("<Button-1>", _tipografia_.tipografia) ###### btn4= Tkinter.Button(framespravka, text="Справка") btn4.grid(row=0, column=4) #btn4.pack(side = 'top') btn4.bind("<Button-1>", showDialog2) ###### root.mainloop() #from wx.lib import sheet #import wx # End of widgets.py
Офлайн
Еще раз. Моя маленькая программа у Вас работает нормально?
Офлайн