Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 1, 2014 15:32:05

Strelok-den
Зарегистрирован: 2014-03-25
Сообщения: 63
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter, окно на передний план

Подскажите почему стали новые окна, те что вызывает 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

Офлайн

#2 Апрель 1, 2014 15:41:00

4kpt_II
От: Харьков
Зарегистрирован: 2013-10-24
Сообщения: 999
Репутация: +  58  -
Профиль   Отправить e-mail  

Tkinter, окно на передний план

Код взорвал мозг в клочья.
Что Вы хотите получить.
Неее. Давайте еще проще.
Есть окно с кнопками. Что должно просиходить, когда я нажимаю на кнопку?

P.S. ООП для GUI применятеся не так

Отредактировано 4kpt_II (Апрель 1, 2014 15:41:36)

Офлайн

#3 Апрель 1, 2014 16:24:04

Strelok-den
Зарегистрирован: 2014-03-25
Сообщения: 63
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter, окно на передний план

4kpt_II

Вот так сейчас:
https://i1.inmac.org/042014/7af1990db12fa962.png

А вот так надо:
https://i1.inmac.org/042014/67ee08d133f9c4f9.png

Т.е что бы новое окно по кнопке выскакивало над старым…

Отредактировано Strelok-den (Апрель 1, 2014 16:24:56)

Прикреплённый файлы:
attachment prav.png (155,2 KБ)

Офлайн

#4 Апрель 1, 2014 16:39:00

4kpt_II
От: Харьков
Зарегистрирован: 2013-10-24
Сообщения: 999
Репутация: +  58  -
Профиль   Отправить e-mail  

Tkinter, окно на передний план

Смотрите. Сделал программу, которая при нажатии кнопки открывает новое окно:

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()

Как-то так… Оно?

P.S. Будут вопросы - пишите…

Отредактировано 4kpt_II (Апрель 1, 2014 16:39:18)

Офлайн

#5 Апрель 1, 2014 17:01:43

Strelok-den
Зарегистрирован: 2014-03-25
Сообщения: 63
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter, окно на передний план

4kpt_II
Программа работает.., но окно new_top все равно под root

Офлайн

#6 Апрель 1, 2014 19:26:01

4kpt_II
От: Харьков
Зарегистрирован: 2013-10-24
Сообщения: 999
Репутация: +  58  -
Профиль   Отправить e-mail  

Tkinter, окно на передний план

Проблему решает:

new_top.focus_force()

P.S. У меня оно над

P.S.S. Будут вопросы - пишите…

Отредактировано 4kpt_II (Апрель 1, 2014 19:26:57)

Офлайн

#7 Апрель 1, 2014 19:56:21

Strelok-den
Зарегистрирован: 2014-03-25
Сообщения: 63
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter, окно на передний план

4kpt_II
Проблему не решило( focus.set()-тоже не решил..
Все равно под начальным окном создается…
Идеи?


Офлайн

#8 Апрель 1, 2014 20:25:02

4kpt_II
От: Харьков
Зарегистрирован: 2013-10-24
Сообщения: 999
Репутация: +  58  -
Профиль   Отправить e-mail  

Tkinter, окно на передний план

Я разве писал focus.set()?
Код программы покажите.

Отредактировано 4kpt_II (Апрель 1, 2014 20:25:50)

Офлайн

#9 Апрель 1, 2014 20:37:46

Strelok-den
Зарегистрирован: 2014-03-25
Сообщения: 63
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter, окно на передний план

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

Офлайн

#10 Апрель 1, 2014 20:43:12

4kpt_II
От: Харьков
Зарегистрирован: 2013-10-24
Сообщения: 999
Репутация: +  58  -
Профиль   Отправить e-mail  

Tkinter, окно на передний план

Еще раз. Моя маленькая программа у Вас работает нормально?

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version