Форум программистов, компьютерный форум, киберфорум
Python: Tkinter
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 07.02.2013
Сообщений: 6

Не открывается окно при нажатии кнопки в tkinter

30.05.2019, 15:12. Показов 3434. Ответов 2

Студворк — интернет-сервис помощи студентам
Добрый день! Подскажите, пожалуйста, мне необходимо сделать окно с кнопками, при нажатии на них: графики, окно с информацией. Проблема с кнопками, в том как указать в них функцию к графику/окну. Не понятно на счет переменных (self, event) и в каком месте писать функции. Сейчас при нажатии ничего не открывается, но и ошибок нет.


Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
from tkinter import Tk, RIGHT, BOTH, RAISED
from tkinter import Tk, Label, BOTH, Frame, Button, Menu, Canvas, W
from tkinter import ttk
from tkinter.ttk import *
 
import matplotlib.pyplot as plt
import numpy as np
 
 
class Example(Frame):
    def __init__(self, parent):
        Frame.__init__(self, parent)
        self.parent=parent
        self.initUI()
    
    def initUI(self):
        self.parent.title("Buttons")
        self.style=Style()
        self.style.theme_use("default")
        
        frame=Frame(self, relief=RAISED, borderwidth=1)
        frame.pack(fill=BOTH, expand=True)
    #Печать
        self.but=Button()
        self.but["text"]="Печать"
        self.but.bind("<Button-1>",self.printer)
        self.but.pack()
    #Гистограмма
        s=['one','two','three','four','five']
        x=[1,2,3,4,5]
        z1=[50,12,16,27,20]
        fig=plt.figure()
        plt.bar(x,z1)
        plt.title('Simple bar chart')
        plt.grid(True) 
    
        self.but=Button()
        self.but["text"]="Гистограмма"
        self.but.bind("<Button-1>",plt.show)
        self.but.pack()
        
    #Кнопки с функциями
        self.but=Button()
        self.but["text"]="О разработчике"
        self.but.bind("<Button-2>", self.razr)
        self.but.pack()
        
        
        self.but=Button()
        self.but["text"]="Гист 2"
        self.but.bind("<Button-3>", self.A)
        self.but.pack()
        
    #Меню - выход  
        menubar=Menu(self.parent)
        self.parent.config(menu=menubar)
        
        fileMenu=Menu(menubar)
        fileMenu.add_command(label="Exit",command=self.onExit)
        menubar.add_cascade(label="File",menu=fileMenu)
        
    def onExit(self):
        self.quit()
        
    def printer(self, event):
        print("Как всегда 'Hello'")
    
    def razr(self, event):
        root=Tk()
        root.title("О разработчике")
        root.geometry('350x100')
        lb2 = Label(root, text="Разработчик: Андрей.", font=("Arial Bold", 18))
        lb2.grid(column=0, row=0)   
    
    def A(self, event): 
        objects = ('СУЭК', 'Кузбассразресуголь', 'Южный Кузбасс', 'Распадская')
        y_pos = np.arange(len(objects))
        performance = [74.5,18.1,15.6,10.6]
        plt.bar(y_pos, performance, align='center', alpha=0.5)
        plt.xticks(y_pos, objects)
        plt.ylabel('компании')
        plt.title('Крупнейшие уголедобывающие компании России')
        plt.show()
    
 
        
def main():
    root=Tk()
    root.geometry("300x200+300+300")
    app=Example(root)
    root.mainloop()
 
if __name__=='__main__':
    main()
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.05.2019, 15:12
Ответы с готовыми решениями:

При нажатии левой кнопки мыши по окну сайта или стима открывается окно рекламы
При нажатии в поле сайта или на любую ссылку время от времени открывается окно с рандомной рекламой. Логи к сообщению прилагаю.

При нажатии кнопки button1 открывается окно memo1 и в нём запускается программа "появляется по буквам текст из 2 слов"
Задача такая, до этого в колледже проходил только LAD, а тут нам дали задание по c++ Нам нужно что бы по нажатию по кнопке button1...

Как сделать окно tkinter неактивным по нажатии на него. Оверлей на Tkinter
Здравствуйте. Пытаюсь сделать оверлей на tkinter, поскольку многие модули из интернета нерабочее на моем ПК. Уже все готово, кроме одной...

2
1293 / 677 / 367
Регистрация: 07.01.2019
Сообщений: 2,302
30.05.2019, 15:40
Лучший ответ Сообщение было отмечено sasmung5550 как решение

Решение

Вы немного не то делаете

вот такая привязка

Python
1
2
3
self.but.bind("<Button-1>",plt.show)
self.but.bind("<Button-2>", self.razr)
self.but.bind("<Button-3>", self.A)
Привязывает кнопки мыши к виджету, соответственно, левую, среднюю и правую

а тут лучше привязать команду непосредственно к нажатию на виджет

Python
1
self.but=Button(command= self.A)
1
0 / 0 / 0
Регистрация: 07.02.2013
Сообщений: 6
30.05.2019, 15:57  [ТС]
Точно, заработало! Спасибо вам большое!)
Уже все перепробовал, оказывается не те функции использовал.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.05.2019, 15:57
Помогаю со студенческими работами здесь

Открывается первое окно, при нажатии на кнопку начать должно смениться на другое окно
Код первого окна: from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import * class...

Не открывается второе окно при нажатии на окно (ошибка)
Здравствуйте! Хочу создать проект, в котором будет несколько окон и между ними будет происходить переключение кнопками. Так вот, создал...

Как вызвать функцию с новым аргументом при нажатии кнопки в Tkinter?
Всем привет) Начал осваивать питон и столкнулся с такой вот темой, при запуске срабатывает команда на кнопке и функция сразу выполняется,...

При нажатии открывается окно и в нем список
Есть кнопку(&lt;button&gt;Test&lt;/button&gt;) При нажатии открывается окно и в нем список. На одной странице. Как это можно сделать?

При нажатии на кнопку открывается окно memo
есть форма1, на ней кнопка, нужно сделать так чтобы при нажатии на кнопку открывалось мемо. Т.е. нужно создавать еще одну форму да?? и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru