Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 04.11.2019, 17:23   #1
masha7777
 
Регистрация: 26.10.2019
Сообщений: 9
По умолчанию Не открывается в окне Tkinter инфа из ексель

Привет,
Почему не отображается в дочернем окне Tkinter данные из файла ексель?
Когда нажимаешь на кнопку 2 - отобразить по всем контрактам - оно открывает дочернее окно, но инфу отображает в окне Pycharm?

Код:
import tkinter  as tk
from openpyxl import load_workbook






class Main(tk.Frame):
    def __init__(self, root):
        super().__init__(root)
        self.init_main()





    def init_main(self):
        toolbar = tk.Frame(bg = "#d7d8e0", bd = 2)
        toolbar.pack(side = tk.TOP, fill = tk.X)
        self.add_img = tk.PhotoImage(file = "data.gif" )
        btn_open_dialog = tk.Button(toolbar,  text="Поиск информации", command=self.open_dialog,bg="#d7d8e0",bd=0,compound=tk.TOP, image=self.add_img)

        btn_open_dialog.pack(side=tk.LEFT)



    def open_dialog(self): # Вызов дочернего окна
        Child()



class Child(tk.Toplevel):
    def __init__(self):
        super().__init__(root)
        self.init_child()



    def init_child(self):
        self.title(" Выберите режим поиска")
        self.geometry("1000x500")
        #self.add_img= tk.PhotoImage(file = "6205.jpg")
        self.grab_set() #захват и удержка  события
        self.focus_set()







        # Кнопка 1
        self.button1   = tk.Button(self, font="Verdana", bg="grey", fg="black", width=90, height=4)
        self.button1["text"] = "Компания - поиск информации"

        self.button1.pack(side="top")


            # Кнопка 2
        self.button2 = tk.Button(self, font="Verdana", bg="yellow", fg="black", width=40, height=6, command = lambda:  self.open_dialog2())
        self.button2["text"] = "Отобразить информацию по всем контрактам"

        self.button2.pack()




            # Кнопка 3
        self.button3 = tk.Button(self, font="Verdana", bg="yellow", fg="black", width=40, height=6)
        self.button3["text"] = "Поиск контракта по номеру телефона"

        self.button3.pack()

    def open_dialog2(self):  # Вызов дочернего окна
        Child2()



class Child2(tk.Toplevel):
    def __init__(self):
        super().__init__(root)
        self.init_child2()



    def init_child2(self):
        self.title("Информация по контрактам")
        self.geometry("1000x500")
        wb = load_workbook('data.xlsx')
        sheet = wb.sheetnames
        sheet = wb.active
        cell = sheet["A"]
        cell = sheet.cell(row=1, column=1)
        for word in sheet[81:84]:
            string = " "
            for cell in word:
                string = str(cell.value)
                string = string.replace("0.0000", "  ")
                string = string.replace(",,,", " ")
                string = string.replace(",", " ")
                print(string)






if __name__=="__main__":
        root = tk.Tk()
        app = Main(root)
        app.pack()
        root.title("Компания ")
        root.geometry = ("850x650-1000-1000")
        root.resizable(False, False)

        root.mainloop()
______________________
Используйте тег [CODE] (кнопка [CODE] в форме сообщения) при вставке кода на форум. Подробнее в FAQ

Последний раз редактировалось Alex11223; 04.11.2019 в 18:16.
masha7777 вне форума   Ответить с цитированием
Старый 04.11.2019, 18:15   #2
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,537
По умолчанию

Питоновый текст без тега [CODE] даже не смотрю - отступы телепатировать лень..
Black Fregat вне форума   Ответить с цитированием
Старый 04.11.2019, 19:01   #3
masha7777
 
Регистрация: 26.10.2019
Сообщений: 9
По умолчанию

Код:
іmport tkinter  as tk
from openpyxl import load_workbook



file = open('data.xlsx')


class Main(tk.Frame):
    def __init__(self, root):
        super().__init__(root)
        self.init_main()





    def init_main(self):
        toolbar = tk.Frame(bg = "#d7d8e0", bd = 2)
        toolbar.pack(side = tk.TOP, fill = tk.X)
        self.add_img = tk.PhotoImage(file = "data.gif" )
        btn_open_dialog = tk.Button(toolbar,  text="Поиск информации", command=self.open_dialog,bg="#d7d8e0",bd=0,compound=tk.TOP, image=self.add_img)

        btn_open_dialog.pack(side=tk.LEFT)



    def open_dialog(self): # Вызов дочернего окна
        Child()



class Child(tk.Toplevel):
    def __init__(self):
        super().__init__(root)
        self.init_child()



    def init_child(self):
        self.title(" Выберите режим поиска")
        self.geometry("1000x500")
        #self.add_img= tk.PhotoImage(file = "6205.jpg")
        self.grab_set() #захват и удержка  события
        self.focus_set()







        # Кнопка 1
        self.button1   = tk.Button(self, font="Verdana", bg="grey", fg="black", width=90, height=4)
        self.button1["text"] = "Kомпания - поиск информации"

        self.button1.pack(side="top")


            # Кнопка 2
        self.button2 = tk.Button(self, font="Verdana", bg="yellow", fg="black", width=40, height=6, command = lambda:  self.open_dialog2())
        self.button2["text"] = "Отобразить информацию по всем контрактам"

        self.button2.pack()




            # Кнопка 3
        self.button3 = tk.Button(self, font="Verdana", bg="yellow", fg="black", width=40, height=6)
        self.button3["text"] = "Поиск контракта по номеру телефона"

        self.button3.pack()

    def open_dialog2(self):  # Вызов дочернего окна
        Child2()



class Child2(tk.Toplevel):
    def __init__(self):
        super().__init__(root)
        self.init_child2()



    def init_child2(self):
        self.title("Информация по контрактам")
        self.geometry("1000x500")
        wb = load_workbook('data.xlsx')
        sheet = wb.sheetnames
        sheet = wb.active
        cell = sheet["A"]
        cell = sheet.cell(row=1, column=1)
        for word in sheet[81:84]:
            string = " "
            for cell in word:
                string = str(cell.value)
                string = string.replace("0.0000", "  ")
                string = string.replace(",,,", " ")
                string = string.replace(",", " ")
                print(string)






if __name__=="__main__":
        root = tk.Tk()
        app = Main(root)
        app.pack()
        root.title("Компания ")
        root.geometry = ("850x650-1000-1000")
        root.resizable(False, False)

        root.mainloop()
masha7777 вне форума   Ответить с цитированием
Старый 04.11.2019, 19:02   #4
masha7777
 
Регистрация: 26.10.2019
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Black Fregat Посмотреть сообщение
Питоновый текст без тега [CODE] даже не смотрю - отступы телепатировать лень..
Пожалуйста, вставила с тегами)
masha7777 вне форума   Ответить с цитированием
Старый 05.11.2019, 16:45   #5
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,537
По умолчанию

Это нормальное поведение - print всегда выдаёт в консоль (ну или в файл, но это параметр добавлять надо).

Чтобы выдать в форму, сделайте на ней элемент Text и добавляйте эти строки туда
Black Fregat вне форума   Ответить с цитированием
Старый 05.11.2019, 22:25   #6
masha7777
 
Регистрация: 26.10.2019
Сообщений: 9
По умолчанию

Код:
    def init_child2(self):
        self.title("Информация по кoнтрактам")
        self.geometry("1000x500")
        tx = Text(root, width=30, height=30, font="14")
        wb = load_workbook('data.xlsx')
        sheet = wb.sheetnames
        sheet = wb.active
        cell = sheet["A"]
        cell = sheet.cell(row=1, column=1)
        for word in sheet[81:84]:
            string = " "

            for cell in word:
                string = str(cell.value)
                string = string.replace("0.0000", "  ")
                string = string.replace(",,,", " ")
                string = string.replace(",", " ")
                tx = Text(root, width=30, height=30, font="14")
                tx.pack()
            print(string)
Не получается!!!!!!!!!помогите кто -то
masha7777 вне форума   Ответить с цитированием
Старый 05.11.2019, 22:26   #7
masha7777
 
Регистрация: 26.10.2019
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Black Fregat Посмотреть сообщение
Это нормальное поведение - print всегда выдаёт в консоль (ну или в файл, но это параметр добавлять надо).

Чтобы выдать в форму, сделайте на ней элемент Text и добавляйте эти строки туда
Спасибо! но я не представляю как правильно вписывать это. уже много посмотрела и перепробовала((((
masha7777 вне форума   Ответить с цитированием
Старый 05.11.2019, 23:41   #8
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,537
По умолчанию

Код:
    def init_child2(self):
        self.title("Информация по кoнтрактам")
        self.geometry("1000x500")
        tx = tk.Text(self, width=30, height=30, font="14")
        tx.pack()
        wb = load_workbook('data.xlsx')
        sheet = wb.sheetnames
        sheet = wb.active
        cell = sheet["A"]
        cell = sheet.cell(row=1, column=1)
        for word in sheet[81:84]:
            string = " "

            for cell in word:
                string = str(cell.value)
                string = string.replace("0.0000", "  ")
                string = string.replace(",,,", " ")
                string = string.replace(",", " ")
                tx.insert(tk.END, string + '\n')

Последний раз редактировалось Black Fregat; 05.11.2019 в 23:50. Причина: Ещё надо было проставить tk.
Black Fregat вне форума   Ответить с цитированием
Старый 06.11.2019, 01:34   #9
masha7777
 
Регистрация: 26.10.2019
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Black Fregat Посмотреть сообщение
Код:
    def init_child2(self):
        self.title("Информация по кoнтрактам")
        self.geometry("1000x500")
        tx = tk.Text(self, width=30, height=30, font="14")
        tx.pack()
        wb = load_workbook('data.xlsx')
        sheet = wb.sheetnames
        sheet = wb.active
        cell = sheet["A"]
        cell = sheet.cell(row=1, column=1)
        for word in sheet[81:84]:
            string = " "

            for cell in word:
                string = str(cell.value)
                string = string.replace("0.0000", "  ")
                string = string.replace(",,,", " ")
                string = string.replace(",", " ")
                tx.insert(tk.END, string + '\n')


Сработало!!!!!!!!!!!!!!!спасибо
masha7777 вне форума   Ответить с цитированием
Ответ
Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не открывается окно при нажатии кнопки в tkinter Andreyzhs Python 0 30.05.2019 16:17
Chromium, если страница открывается в новом окне, как обратиться к этому окну? Женя32 Общие вопросы Delphi 9 10.09.2018 16:48
Определенная часть страницы открывается в маленьком окне deman3 HTML и CSS 1 09.11.2013 17:48
Не открывается ссылка в новом окне tol64 HTML и CSS 3 20.07.2013 07:47
Папка не открывается, а открывается командная строка, как исправить? Серёга07 Свободное общение 4 09.11.2012 22:30