我创建了一个sqlite数据库,它有一个存储温度值的表.温度值首次以升序写入数据库.然后我将数据库中的温度值读入列表,然后将该列表添加到组合框中以选择温度 - 工作正常.
结果列表是:
templist = ['25', '50', '100', '150', '200', '250', '300'].
Run Code Online (Sandbox Code Playgroud)
然后我向数据库添加一个新的温度值,比如'33'.
它被附加到表的末尾.如果我现在读取温度,列表将变为:
['25', '50', '100', '150', '200', '250', '300', '33'].
Run Code Online (Sandbox Code Playgroud)
如果我做templist.sort()
或sorted(templist)
,最终的结果是
['150', '200', '25', '250', '300', '33', '50']
Run Code Online (Sandbox Code Playgroud)
是否有任何简单的方法按升序对列表进行排序,以便我得到:
['25', '33', '50', '100', '150', '200', '250', '300']
Run Code Online (Sandbox Code Playgroud) 我最近才开始编程和Python(PyQt).我有我的主要QMainWindow
课程.但我想将它与UI小部件分开,以便所有窗口内容(菜单,工具栏,常用按钮)都在QMainWindow
,但所有程序/ UI特定的小部件(pusgbuttons,组合框,图像,复选框等)都在一个单独的QWidget
类中.但我不确定我是否正确行事.
我是这样做的:
class MyMainWindow(QMainWindow):
def __init__(self, parent = None):
super(MyMainWindow, self).__init__(parent)
self.main_widget = QWidget(self)
...
self.form_widget = FormWidget(self)
#This is my UI widget
self.main_layout = QVBoxLayout(self.main_widget)
self.main_layout.sizeConstraint = QLayout.SetDefaultConstraint
self.main_layout.addWidget(self.form_widget.main_widget)
#form_widget has its own main_widget where I put all other widgets onto
self.main_widget.setLayout(self.main_layout)
self.setCentralWidget(self.main_widget)
Run Code Online (Sandbox Code Playgroud)
你有什么建议将代码分成小块?怎么做得更好?或者对于UI来说,它们都可以在一个大的地方?我应该将UI代码/类分解为单独的文件吗?
谢谢.
[解决了]
我发现了我的错误 - 我从UI小部件类中删除了main_widget(现在所有UI小部件都直接放在UI类小部件本身上)并且只执行此操作:
self.main_layout.addWidget(self.form_widget)
Run Code Online (Sandbox Code Playgroud)
没有菜单的问题
例如,我有一个无序的值列表[10,20,50,200,100,300,250,150]
我有这个代码,它返回下一个更大的值:
def GetNextHighTemp(self, temp, templist):
target = int(temp)
list = []
for t in templist:
if t != "":
list.append(int(t))
return str(min((abs(target - i), i) for i in list)[1])
Run Code Online (Sandbox Code Playgroud)
例如,如果temp = 55,它将返回'100'.
但是我怎样才能获得较小的价值?那是如何让它返回'50'?
谢谢.
编辑 - 现在正在工作
def OnTWMatCurrentIndexChanged(self):
self.ClearTWSelectInputs()
material = self.cb_TW_mat.currentText()
temp = self.txt_design_temp.text()
if material != "":
Eref = self.GetMaterialData(material, "25", "elast")
if Eref and Eref != "":
Eref = str(float(Eref) / 1000000000)
self.txt_TW_Eref.setText(Eref)
else:
self.txt_TW_Eref.setText("194.8")
self.ShowMsg("No temperature match found for E<sub>ref</sub> in material data file. …
Run Code Online (Sandbox Code Playgroud) 有谁知道如何仅使用Python在QTextEdit中显示以任何格式(TXT,MathML,MML,LaTeX,HTML,XML或其他任何形式)编写的数学方程式,而不使用Latex本身这样的第三方软件包。我试图从Qt中找到MathML Widget,但是它从他们的网站中消失了,我在任何地方都找不到。
我不为方程式源(字符串或文件)而烦恼。我只是想不出如何很好地显示它们(与它们出现在网页上的方式相同,例如http://en.wikipedia.org/wiki/MathML)。
我的QTextEdit当前获取HTML字符串。我尝试嵌入该Wikipedia文章中的MathML示例,但它无法正确显示,它会忽略所有这些MathML标签。
会非常感谢您的帮助。谢谢。
我正在尝试在OBS上构建程序。您能否告诉我setup.py创建文件夹结构的外观,例如,如果我有以下内容:
../MyProgram
COPYING
README
mainscript.pyw
/applications
/app1
/icons
pic1.png
app1.py
/app2
/icons
pic2.png
/scripts
script1.py
script2.py
app2.py
Run Code Online (Sandbox Code Playgroud)
等等
我阅读了使用“ package_dir”,“ packages”播放的Python文档,但OBS仍然给我错误,它找不到图标文件。我猜安装脚本不会创建它们。当我尝试在本地构建rpm时,它也给了我同样的错误。当我查看BUILD文件夹时,没有创建文件夹“ applications”,并且其下没有任何内容。
会非常感谢您的帮助。请提供一个例子。谢谢。
我有这个代码来创建一个数据库:
from sqlalchemy import create_engine
from sqlalchemy import Table, Column, Integer, String, Float, MetaData, ForeignKey
from sqlalchemy.sql import select, and_
from PyQt4 import QtGui, QtCore
class DbUtils(object):
def __init__(self, db_file = None, parent = None):
self.db = None
self.db_connection = None
self.db_file = str(db_file)
def db_open(self):
self.db = create_engine('sqlite:///' + self.db_file)
self.db_connection = self.db.connect()
def db_close(self):
self.db_connection.close()
def db_create_voltdrop(self):
metadata = MetaData()
tb_cable_brands = Table('cable_brands', metadata,
Column('id', Integer, primary_key=True),
Column('brand', String)
)
tb_cable_types = Table('cable_types', metadata,
Column('id', Integer, primary_key=True),
Column('brand_id', …
Run Code Online (Sandbox Code Playgroud) python ×6
equations ×1
layout ×1
list ×1
math ×1
pyqt ×1
qmainwindow ×1
setup.py ×1
sorting ×1
sqlalchemy ×1