0 / 0 / 0
Регистрация: 07.02.2013
Сообщений: 6
1

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

30.05.2019, 15:12. Показов 2116. Ответов 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)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.05.2019, 15:12
Ответы с готовыми решениями:

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

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

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

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

2
1275 / 662 / 363
Регистрация: 07.01.2019
Сообщений: 2,174
30.05.2019, 15:40 2
Лучший ответ Сообщение было отмечено 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  [ТС] 3
Точно, заработало! Спасибо вам большое!)
Уже все перепробовал, оказывается не те функции использовал.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.05.2019, 15:57

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

При нажатии на кнопку открывается окно, нужен код
В общем на сайте у меня есть кнопка тех. поддержки которая направляет сразу в обсуждение в группу...

При нажатии на любую ссылку открывается постороннее окно
Здравствуйте. Во всех браузерах при нажатии на ссылки или на любом месте на странице открываются...

Как сделать так, чтобы при использовании модуля из tkinter не открывалось окно tkinter?
Как сделать так, чтобы при использовании модуля из tkinter не открывалось окно tkinter? Я пишу...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.