小编Sim*_*bbs的帖子

将滚动条添加到Tkinter中的一组小部件

我使用Python来解析日志文件中的条目,并使用Tkinter显示条目内容,到目前为止它非常好.输出是标签小部件的网格,但有时会有比屏幕上显示的行多的行.我想添加一个滚动条,看起来应该很容易,但我无法弄明白.

该文档暗示只有List,Textbox,Canvas和Entry小部件支持滚动条界面.这些似乎都不适合显示小部件网格.可以在Canvas小部件中放置任意小部件,但您似乎必须使用绝对坐标,因此我无法使用网格布局管理器?

我已经尝试将小部件网格放入框架,但这似乎不支持滚动条界面,所以这不起作用:

mainframe = Frame(root, yscrollcommand=scrollbar.set)
Run Code Online (Sandbox Code Playgroud)

任何人都可以建议绕过这个限制吗?我不想在PyQt中重写并增加我的可执行图像大小,只需要添加一个滚动条!

python tkinter tkinter.scrollbar

57
推荐指数
3
解决办法
5万
查看次数

如何在Graphics View框架中使用Qt Model/View框架

我正在研究地图应用程序,需要使用表格,表格和地图中的图形对象来显示数据对象.我正在使用PyQt,但这并不重要,因为这是一个Qt问题而不是Python问题.

如果我只需要表格和表单视图,这将很容易,我只使用Qt模型/视图框架.但是,我需要地图视图来提供仅使用Graphics View框架才真正可用的功能,这实际上是它自己的模型/视图框架,QGraphicsScene充当数据模型.

我可以想到两种方法来做到这一点.一种是从QAbstractItemModel子类化的权威模型开始,将其链接到QAbstractItemView的子类,并从那里生成并更新场景中的QGraphicsItems.这看起来很丑陋,因为我不知道如何通过与QGraphicsItem的交互来处理用户与数据项的交互和更改.

我能想到的另一种方法是将QGraphicsScene视为权威数据源,将数据对象存储在每个QGraphicsItem的.data()属性中.然后,我将QAbstractItemModel子类化并编写它,以便它在数据存储中访问场景中的数据,然后其他视图将其用作模型.我如何将更改传播到场景中的数据直到模型?

无论采取哪种方法,看起来框架都没有处理差距.在模型/视图中,假设所有更改都在模型中进行.在图形视图中,假定所有更改都在场景中进行.

那么你选择哪种方法QAbstractItemModel(权威) - > QAbstractItemView-> QGraphicsScene或者QGraphicsScene(权威) - > QAbstractItemModel->其他视图.你为什么选择一个而不是另一个?你有什么期望?有没有其他人需要弥合Qt的双模型/视图框架之间的差距,你是如何做到的?

qt qt4 pyqt pyqt4 qgraphicsview

16
推荐指数
1
解决办法
5344
查看次数

什么是在CSV文件中存储和检索布尔值的便捷方法

如果我使用CSV模块存储布尔值,它将被str()函数转换为字符串'True'或'False'.但是当我加载这些值时,一个'False'字符串的计算结果为True,因为它是一个非空字符串.

我可以通过'manualy'来解决它在读取时使用IF语句检查字符串以查看字符串是什么,但它有点不那么优雅.任何更好的想法,或者这只是编程世界中的其中一个?

python csv

7
推荐指数
3
解决办法
5026
查看次数

使用Jinja模板基于单元格值对表格中的单元格进行颜色编码

我有一个简单的烧瓶应用程序,需要显示一个值表,单元格背景根据阈值的单元格值进行颜色编码.我正在生成表格内容如下:

  {% block dashboard_table2 %}
      <table>
      {% for row in data %}
          {% for item in row %}
              <td>{{ item }}</td>
          {% endfor %}
      </tr>
      {% endfor %}
      </table>
  {% endblock %}
Run Code Online (Sandbox Code Playgroud)

我尝试在Python中将样式标记中的值包装起来,但它不起作用:

  if int(value) <= 10:
      value = '<p style="background-color:Red">' + value + '</p>'
Run Code Online (Sandbox Code Playgroud)

我猜测页面的CSS覆盖了style属性.我也试过设置文本颜色属性而不是背景颜色但没有骰子.有什么建议可以做到这一点吗?我想要一个简洁的方法来指定模板中没有硬编码的阈值.

css python jinja2 flask

3
推荐指数
1
解决办法
5655
查看次数

在Python中使用可变序列方法创建列表失败

这些工作:

>>> print [1,2,3] + [4,5]
[1,2,3,4,5]
>>> 'abc'.upper()
'ABC'
Run Code Online (Sandbox Code Playgroud)

这不是:

>>> print [1,2,3].extend([4,5])
None
Run Code Online (Sandbox Code Playgroud)

为什么?你可以在裸字符串上使用字符串方法,那么为什么不能在像列表这样的裸序列类型上使用方法呢?即便这样也行不通:

>>> print list([1,2,3]).extend([4,5])
None
Run Code Online (Sandbox Code Playgroud)

NB对于"工作"的口语含义.当然,我的预期行为不正确的理由很充分.我只是好奇它是什么.


PS我接受了下面的灵魂检查答案,他是对的,但在调查加法运算符是如何实现的时候,我发现以下有效:

>>> [1,2,3].__add__([4,5])
[1, 2, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)

但是可能add方法不会修改底层对象并创建一个新的返回对象,就像字符串方法一样.

python

1
推荐指数
1
解决办法
266
查看次数

标签 统计

python ×4

css ×1

csv ×1

flask ×1

jinja2 ×1

pyqt ×1

pyqt4 ×1

qgraphicsview ×1

qt ×1

qt4 ×1

tkinter ×1

tkinter.scrollbar ×1