PyQt4 минимизируют к лотку

profile является декоратором, поэтому вам нужно обернуть ваш скрипт в функцию:

from memory_profiler import profile
@profile
def everything():    
    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    import seaborn as sns; sns.set()
    uniform_data = np.random.rand(10, 12)
    ax = sns.heatmap(uniform_data, cbar_kws={'ticks': [0, 2, 4, 6, 8, 10]}, vmin=0, vmax=10) 
    plt.show()


    #Create a DataFrame
    d = {'Name':['Alisa','Bobby','Cathrine','Madonna','Rocky','Sebastian','Jaqluine',
       'Rahul','David','Andrew','Ajay','Teresa'],
       'Score1':[62,47,55,74,31,77,85,63,42,32,71,57],
       'Score2':[89,87,67,55,47,72,76,79,44,92,99,69]}


    df = pd.DataFrame(d)
    col_mean=df.mean()
    col_std=df.std()
    get_disc=df.describe()

everything()
23
задан Gavin Vickery 16 April 2009 в 22:16
поделиться

3 ответа

Довольно просто, если вспомнить, что на самом деле нет способа свернуть системный трей .

Вместо этого вы притворяетесь, делая это:

  1. Поймайте событие минимизации в вашем окне
  2. В обработчике события минимизации создайте и отобразите QSystemTrayIcon
  3. Также в обработчике события минимизации вызовите hide () или setVisible (false) в вашем окне
  4. Поймайте щелчок / двойной щелчок / элемент меню на значке в системном трее
  5. В обработчике событий значка в системном трее вызовите show () или setVisible (true) в своем окне, и, возможно, скрыть иконку в трее.
31
ответ дан 29 November 2019 в 01:12
поделиться

Код помогает, так что здесь » Это то, что я написал для приложения, за исключением closeEvent вместо события минимизации.

Примечания:

«closeEvent (event)» является переопределенным событием Qt, поэтому его нужно поместить в класс, реализующий окно. Вы хотите скрыть.

«okayToClose ()» - это функция, которую вы могли бы рассмотреть для реализации (или логический флаг, который вы могли бы захотеть сохранить), поскольку иногда вы действительно хотите выйти из приложения, а не сворачивать в systray.

это также пример того, как снова показать () ваше окно.

def __init__(self):
  traySignal = "activated(QSystemTrayIcon::ActivationReason)"
  QtCore.QObject.connect(self.trayIcon, QtCore.SIGNAL(traySignal), self.__icon_activated)

def closeEvent(self, event):
  if self.okayToClose(): 
    #user asked for exit
    self.trayIcon.hide()
    event.accept()
  else:
    #"minimize"
    self.hide()
    self.trayIcon.show() #thanks @mojo
    event.ignore()

def __icon_activated(self, reason):
  if reason == QtGui.QSystemTrayIcon.DoubleClick:
    self.show()
12
ответ дан 29 November 2019 в 01:12
поделиться

Просто добавлю к примеру Криса:

Крайне важно , чтобы вы использовали нотацию Qt при объявлении сигнала, то есть

правильно :

self.connect(self.icon, SIGNAL("activated(QSystemTrayIcon::ActivationReason)"), self.iconClicked)

, а не PyQt

неверно и не будет работать:

self.connect(self.icon, SIGNAL("activated(QSystemTrayIcon.ActivationReason)"), self.iconClicked)

Обратите внимание на :: в сигнальной строке. На это у меня ушло около трех часов.

7
ответ дан 29 November 2019 в 01:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: