我正在尝试为那些不太精明的同事开发一个kivy应用程序,该应用程序围绕我为项目开发的一些计算包装了一个不错的GUI;当前,我遇到的一个比较奇怪的问题是,我在matplotlib.plotly中调用的plt.figure()函数在图形上绘制了一些数据,这导致kivy应用程序窗口缩小。使用Config.set()锁定大小不会禁止此操作。知道为什么会这样吗?奇怪的是,缩小似乎增加了kivy应用程序的分辨率,从而使窗口更清晰,更易于阅读,这实际上是一种不错的选择。只是想了解这里发生了什么以及如何使用它。下面是重现现象的示例。
-GUI.py-
from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.uix.popup import Popup
import threading
from calc import main
class Pop(Popup):
pass
class MetaLevel(GridLayout):
def dummy(self, *args):
App.get_running_app().pop.open()
threading.Thread(target=self.calculate, args=(args,)).start()
def calculate(self, *args):
main()
class graphics(App):
def build(self):
self.pop = Pop()
return MetaLevel()
if __name__ == "__main__":
graphics().run()
-calc.py-
def main():
import numpy as np
import matplotlib.pyplot as plt
from kivy.app import App
from pathos.multiprocessing import ProcessPool as Pool
grid = np.array([(m, n)
for m in np.arange(1, 100, 1)
for n in np.arange(1, 100, 1)])
def calc(grid):
var1 = grid[0]
var2 = grid[1]
y = var1*var2
return y
res = Pool().map(calc, grid)
fig = plt.figure(111, dpi=200)
print('done')
App.get_running_app().pop.dismiss()
# data output from res here
-graphics.kv-
# Custom button
<Button>:
font_size: 12
<MetaLevel>:
id: calculator
rows: 5
padding: 10
spacing: 10
BoxLayout:
height: 10
Label:
spacing: 10
text: 'test'
BoxLayout:
Button:
id: run_button
text: "Run"
on_release: root.dummy()
答案 0 :(得分:0)
听起来可能正在发生以下情况:
我不确定事件的顺序是什么,这实际上可能是某个地方的错误引起的,但这似乎是发生这种情况的合理原因。
如果是这种情况,我不知道解决方法是什么。它需要在具有类似显示设置的同一操作系统上进行一些测试。您正在使用什么操作系统?