Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Tkinter: проблема реализации второго окна (РЕШЕНО)  (Прочитано 1681 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн alebo

  • Автор темы
  • Новичок
  • *
  • Сообщений: 32
    • Просмотр профиля
Доброго времени суток, уважаемые.

Имеется приложение, написанное на языке Python. При нажатии на кнопку 1, которая  находится на главном окне (root), создается второе окно (main), на котором также имеется одна кнопка 2.

 Проблема в том, что при запуске второго окна (при нажатии на кнопку 1)  автоматически запускается событие кнопки 2, а при нажатии на кнопку 2 ничего не происходит.

Прикрепляю исходный текст приложения.
# -*- coding: utf-8 -*-
from Tkinter import *
import os, linecache, shutil

user_home_dir = os.getenv('HOME')

class Application(Frame):

    

    def find_device(self):
        
        os.system("sudo python /home/alebo/UQS/scripts/find.py")    
        
        
count = 0
for line in reversed(open("/home/alebo/fstab").readlines()):
     count = count + 1
    
   i = 1
#while i < count+2:
while i < 10:
output = open ("/home/alebo/%s"%i, 'r')
dev = linecache.getline("/home/alebo/%s"%i, 1)
dev = dev.strip("
")
fs = linecache.getline("/home/alebo/%s"%i, 2)
    

a = ["","","","","","","","","","","",""] # массив строк (dev + fs)
a[i] = ""
a[i] = "Device %s, TypeFS %s" % (dev, fs)

choices = ["%s"%a[i]]
for item in choices:
     self.list.insert(END, item)


i = i + 2

    def mount(self):

main = Tk()    # создаётся главное окно

frame01 = Frame (main)
frame01.pack ()
frame02 = Frame (main)
frame02.pack ()
self.list = Listbox(frame01, width=27,heigh=7,bd=5, selectmode = SINGLE)    # лист
self.list.pack(side = TOP)
self.find_device()
x = self.list.curselection()

self.button02 = Button(frame02, text="Примонтировать ", bg="white", fg="blue", command=self.mounting())
        self.button02.pack( side = TOP)


    def mounting(self):
print "aaa"


    def createWidgets(self):

        self.QUIT = Button(self, text="Quit", bg="white", fg="red", command=self.quit)
        self.QUIT.pack({"side": "bottom"})
        self.button1 = Button(frame1, text="Монтирование разделов HDD", bg="white", fg="blue", command=self.mount)
        self.button1.pack( side = TOP)
    
    def __init__(self, master=None):
        Frame.__init__(self, master)
        self.pack()
        self.createWidgets()

root = Tk()    # создаётся главное окно
root.title('Ubuntu Quick Start')
frame1 = Frame (root, width=50,heigh=7,bd=9)
frame1.pack ()
frame2 = Frame (root)
frame2.pack ()
frame3 = Frame (root)
frame3.pack ()

app = Application(master=root)
app.mainloop()            # запуск главного окна и цикла его событий
root.destroy()

Будьте добры, помогите, пожалуйста.

Пользователь решил продолжить мысль 10 Августа 2010, 22:32:18:
Проблема решена! :)
« Последнее редактирование: 10 Августа 2010, 22:32:37 от alebo »

Оффлайн truegeek

  • FPGA Designer
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 4214
  • аЦкий схемотехник
    • Просмотр профиля
Ну так напишите решение своей проблемы...
Вдруг кому-нибудь да и пригодится...
В другом случае тему можно удалить

Оффлайн alebo

  • Автор темы
  • Новичок
  • *
  • Сообщений: 32
    • Просмотр профиля
С удовольствием!

В функцию mount(self) было добавлена функция __init__(self, master=None):

def __init__(self, master=None):
        Frame.__init__(self, master)
        self.pack()
        self.createWidgets()

Далее создаем второе окно:

Цитировать
main2 = Tk()

В конце функции mount() вставляем:

Цитировать
mainloop()           
main2.destroy()



В итоге у меня получилось следующее:

Цитировать
def mount(self):
   
   def __init__(self, master=None):
           Frame.__init__(self, master)
           self.pack()
           self.createWidgets()
   main2 = Tk()    # создаётся главное окно

   frame01 = Frame (main2)
   frame01.pack ()
   frame02 = Frame (main2)
   frame02.pack ()
   frame03 = Frame (main2)
   frame03.pack ()
   frame04 = Frame (main2)
   frame04.pack ()
   frame05 = Frame (main2)
   frame05.pack ()

   self.list = Listbox(frame01, width=27,heigh=7,bd=5, selectmode = SINGLE)    # лист
   self.list.pack(side = TOP)
   self.find_device()
   
   self.label1 = Label(frame02, font="Arial 8", text=u'Укажите точку монтирования ')
   self.label1.pack()
        self.button01 = Button(frame04, text="Примонтировать", bg="white", fg="blue", command=self.mounting)
        self.button01.pack({"side": "bottom"})
   self.ent = Entry(frame03, width=20,bd=3)
   self.ent.grid(row=2, column=0, columnspan=2)
   self.QUIT = Button(main2, text="Готово", bg="white", fg="red", command=self.quit)
        self.QUIT.pack({"side": "bottom"})
   
   mainloop()           
   main2.destroy()


 

Страница сгенерирована за 0.304 секунд. Запросов: 27.