无论如何使用DatePicker小部件与其他日历系统?
我需要Jalali(波斯语)日历系统的选择器,但我不知道如何DatePicker用我的数据提供.
我研究了与之相关的方法,DatePicker却找不到任何可以让我这样做的方法.
我还发现了一个名为android-wheel的自定义小部件,它是一个iOS-styled小部件并且感觉不是原生的,但它允许我实现它.
那么有没有一个native-looking DatePicker小部件,允许我选择Jalali日历系统的日期,并在波斯语中有月份名称?
更新:我之前已经回答了我的问题并解决了这个问题,但@Mohamad Amin为此创建了一个很棒的图书馆,我强烈建议你使用他的图书馆(感谢Mohamad Amin).
该TextDirection文档说:
Flutter旨在满足使用世界上当前使用的任何语言编写的应用程序的需求,无论它们使用从右到左还是从左到右的书写方向。Flutter不支持其他书写模式,例如竖排文本或Boustrophedon文本,因为这些模式很少在计算机程序中使用。(添加了重点)
Flutter不仅不支持垂直文本,而且将来也不会正式支持它。这是一个早期的设计决定(请参阅此处和此处)。
即使这样,今天对垂直脚本的支持还是有实际用途的。除了某些中文和日文用法外,传统的蒙古文字还需要它。该脚本在内蒙古的计算机程序中非常常用(例如example,example,example,example,example,example)。
它是从上到下写的,行从左到右环绕:
此外,表情符号和CJK字符在垂直显示时仍保持其方向(并非绝对必要,而是首选)。在下图中,顶部显示了当前的实现,底部显示了正确的垂直渲染:
// sample text
???? ????? ????? ????? ???? ???????? ??????? ?????? ???? ???? one two three four five six seven eight nine ten ?? ??? ????? English? ???????
Run Code Online (Sandbox Code Playgroud)
由于Flutter不支持垂直脚本,因此必须从头开始实施。所有实际的文本布局和绘画都是使用LibTxt在Flutter引擎中完成的,所以我无法更改它。
创建从上到下的垂直文本小部件会涉及什么?
我还在寻找答案。Rémi的答案适用于单行文本,但不适用于多行文本。
我目前正在研究三种不同的可能解决方案:
所有这些将涉及测量文本,对其进行布局并获得行列表。
我目前倾向于制作自定义的小部件和渲染对象,以模仿RichText和RenderParagraph。在后台,RenderParagraph使用TextPainter来布局和绘制文本。我现在的问题是TextPainter与底层的Skia LibTxt库紧密耦合。这就是所有实际布局和绘画的地方。除了默认的ltr和rtl外,将文本放置在其他任何地方都被证明是一个大问题。
接受的答案符合我在这个问题中提出的标准。我认为它将满足短期需求。对于应用文字样式,我有些保留,但我需要做更多测试。从长远来看,我仍然可以尝试自定义文本布局和绘画。
如何SwitchPreference在Android中为小部件设置可绘制的自定义样式或其他背景选择器?
(注意:不是常规Switch小部件,我的意思是SwitchPreference在PreferenceActivity/ 中使用的标准小部件PreferenceFragment)
我正在尝试仅使用Python为Qt Designer编写自定义小部件.我正在关注我在网上找到的几个教程,但是没有一个是在工作或者我认为最接近工作的例子.
所以我的问题是:
在我的程序的定期间隔期间,需要将块(3个堆叠的)小部件添加到水平布局.由于每个块中的小部件对彼此都很重要,我希望将每个堆栈封装为它自己的小部件(使布局更容易添加业务).
我无法让PyQt4将我的'堆栈'识别为小部件.
我在Qt Designer中创建了widget堆栈(作为form:widget),并通过
'pyuic4 DesignerFile.ui> ClassFile.py' 将其转换为.py .
现在我似乎无法通过.addWidget(Class)将此"堆栈"(3个子窗口小部件的父窗口小部件)添加到布局中.
我尝试构建堆栈类的超类(因为我需要向堆栈添加更多功能)但是类的实例要么......
这就是我目前失败的原因(尽管它是关于我尝试过的第8类结构):
from ClassFile import ClassCode
class Stack(ClassCode):
def __init__(self,parent= None):
QtGui.QWidget.__init__(self,parent)
Run Code Online (Sandbox Code Playgroud)
有人可以帮我构建这个或者引导我一些好的例子吗?
(我在以下两个来源中模仿了代码,但没有用!
http://lateral.netmanagers.com.ar/stories/27.html#what-you-need-to-follow-the-tutorial
http ://zetcode.com/tutorials/pyqt4/customwidgets/)
谢谢!
规格:
python 2.7.2
PyQt4
Windows 7
我必须实现图形用户界面设计.选择的框架是Qt.
经过一些实施工作后,出现了一些困难和问题.重点是有一些花哨的设计元素,包括渐变,3D效果,阴影等.
目前使用的方法 - 我真的不太喜欢 - 是使用图形设计中的位图作为各种小部件的背景.根据元素的位置和可伸缩性,这有一些非常令人讨厌的缺点.该方法生成相当静态的用户界面,难以维护和适应.
我很感激它使用尽可能多的Qt默认工具在运行时动态生成所有图形元素.但我只是不知道如何实现这种复杂的视觉效果.作为示例,您可以假设以下图像.

问题: 如何获得合理的方法来获得如下结果.(我不想要确切的解决方案,只需要一些指示,一般方法和最佳实践.)
我问了一个名为“如何将 Widget 注入自定义子 Widget 并使用子 Widgets 迭代索引?”的问题。我已经得到了答案,但有一个问题。
答案说我应该:
“不是将 Widget 传递给您的自定义 AppList,您可以传递一个构建器函数,该函数返回一个 Widget 并根据需要获取参数,例如索引和所需的任何配置。类似于以下内容:
函数定义:
typedef Widget MyListTileBuilder(String tileText);
Run Code Online (Sandbox Code Playgroud)
然后更改以下内容:
final Widget child;
Run Code Online (Sandbox Code Playgroud)
到
final MyListTileBuilder childBuilder;
Run Code Online (Sandbox Code Playgroud)
当然,您需要在示例类中实现您的构建器方法:
Widget MyListTileBuilderImplementation (int index) {
return ListTile (
title: Text(installedApps[index]["app_name"]) //this is the text
),
}
Run Code Online (Sandbox Code Playgroud)
当您在示例类中构建 AppList 时,您传递了该方法
AppList (
childBuilder: MyListTileBuilderImplementation
)
Run Code Online (Sandbox Code Playgroud)
最后在 AppList 中调用构建器,而不是添加子小部件”:
itemBuilder: (context, index) {
return childBuilder(index); //This is where the ListTile will go.
},
Run Code Online (Sandbox Code Playgroud)
所以,我试图编辑我的代码。但由于某种原因它不起作用。我认为我做错了。有谁知道如何解决这个问题?(如果您可以编辑我的完整代码,那将非常有帮助。)
完整代码:
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'dart:async';
import 'dart:io';
import …Run Code Online (Sandbox Code Playgroud) 我有一个自定义控件(现在很简单)就像一个按钮.它需要显示未按下和按下的图像.它在活动中出现多次,并且具有不同的图像对,具体取决于它的使用位置.想想工具栏图标 - 与此类似.
这是我的布局的摘录:
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:MyApp="http://schemas.android.com/apk/res/com.example.mockup"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TableRow>
<com.example.mockup.ImageGestureButton
android:id="@+id/parent_arrow"
android:src="@drawable/parent_arrow"
MyApp:srcPressed="@drawable/parent_arrow_pressed"
... />
...
</TableRow>
</TableLayout>
Run Code Online (Sandbox Code Playgroud)
attrs.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="ImageGestureButton">
<attr name="srcPressed" format="reference" />
</declare-styleable>
</resources>
Run Code Online (Sandbox Code Playgroud)
并且,在R.java中,人们发现:
public static final class drawable {
public static final int parent_arrow=0x7f020003;
public static final int parent_arrow_pressed=0x7f020004;
...
}
Run Code Online (Sandbox Code Playgroud)
在窗口小部件实例化期间,我想确定活动xml中声明的id.我怎么做?我试过这个(我使用工作代码更新了我原来的帖子;所以,以下工作.)
public class ImageGestureButton extends ImageView
implements View.OnTouchListener
{
private Drawable unpressedImage;
private Drawable pressedImage;
public ImageGestureButton (Context context, AttributeSet attrs)
{
super(context, attrs);
setOnTouchListener (this);
unpressedImage = …Run Code Online (Sandbox Code Playgroud) android custom-widgets android-drawable android-custom-attributes
这是我目前的问题:我正在寻找一个简单的树视图小部件,如下图所示.我只需要树视图,而不是带有过滤器行编辑,按钮等的对话框.只有树形视图.
我检查了Qt Designer的来源,发现了该小部件的实现,但是它太复杂了,从那里切割所需的来源将非常困难.所以我在这里:

谢谢!
我有一个QGraphicsView更大的QGraphicsScene可以拖动的。在QGraphicsScene我有一个子类QGraphicsItem( TestItem) 中,它显示QGraphicsPixmapItem,它可以具有随机形状。(我不QGraphicsPixmapItem直接使用,因为将来要实现额外的功能)
我希望这个项目是可移动的,但前提是用户在该项目的形状内按下。如果在形状之外,但仍在 内部boundingRectangle,我希望拖动其后面的场景。这是因为boundingRectangle可能比形状大得多并且用户看不到它,所以尝试将场景拖动到 附近Pixmap并且它不起作用会很奇怪。
这是我的子类项目:
TestItem::TestItem(QPointF position, QPixmap testImage, double width,
double length, QGraphicsItem * parent):
QGraphicsItem(parent),
m_boundingRect(QRectF(0,0,5, 5)),
m_dragValid(false),
m_path(QPainterPath()),
mp_image(new QGraphicsPixmapItem(this))
{
setBoundingRect(QRectF(0,0,width,length));
setPos(position - boundingRect().center());
setFlag(QGraphicsItem::ItemIsMovable);
mp_image->setPixmap(testImage.scaled(width, length));
m_path = mp_image->shape();
}
QPainterPath TestItem::shape()
{
return m_path;
}
QRectF TestItem::boundingRect() const
{
return m_boundingRect;
}
void TestItem::setBoundingRect(QRectF newRect)
{
prepareGeometryChange();
m_boundingRect = newRect;
}
Run Code Online (Sandbox Code Playgroud)
我尝试过像这样覆盖鼠标事件,但它给我带来的只是在形状外部但在边界矩形内部时根本没有任何功能
void …Run Code Online (Sandbox Code Playgroud) qt qgraphicsview qgraphicsitem qgraphicsscene custom-widgets
我正在尝试显示从二进制文件读入的图像数据(我编写的代码用于从文件中检索此数据并将其存储为用于QImage()的图像).我想要做的是将滑块连接到图形视图小部件,这样当您移动滑块时,它会移动帧并显示该帧中的图像(这些是长度为1-500帧的回波图).我对PyQt很新,很奇怪人们甚至可以开始这样做吗?
from PyQt4.QtCore import *
from PyQt4.QtGui import *
import numpy as np
class FileHeader(object):
fileheader_fields= ("filetype","fileversion","numframes","framerate","resolution","numbeams","samplerate","samplesperchannel","receivergain","windowstart","winlengthsindex","reverse","serialnumber","date","idstring","ID1","ID2","ID3","ID4","framestart","frameend","timelapse","recordInterval","radioseconds","frameinterval","userassigned")
fileheader_formats=('S3','B','i4','i4','i4','i4','f','i4','i4','i4','i4','i4','i4','S32','S256','i4','i4','i4','i4','i4','i4','i4','i4','i4','i4','S136')
def __init__(self,filename,parent=None):
a=QApplication([])
filename=str(QFileDialog.getOpenFileName(None,"open file","C:/vprice/DIDSON/DIDSON Data","*.ddf"))
self.infile=open(filename, 'rb')
dtype=dict(names=self.fileheader_fields, formats=self.fileheader_formats)
self.fileheader=np.fromfile(self.infile, dtype=dtype, count=1)
self.fileheader_length=self.infile.tell()
for field in self.fileheader_fields:
setattr(self,field,self.fileheader[field])
def get_frame_first(self):
frame=Frame(self.infile)
print self.fileheader
self.infile.seek(self.fileheader_length)
print frame.frameheader
print frame.data
def __iter__(self):
self.infile.seek(self.fileheader_length)
for _ in range(self.numframes):
yield Frame(self.infile)
#def close(self):
#self.infile.close()
def display(self):
print self.fileheader
class Frame(object):
frameheader_fields=("framenumber","frametime","version","status","year","month","day","hour","minute","second","hsecond","transmit","windowstart","index","threshold","intensity","receivergain","degc1","degc2","humidity","focus","battery","status1","status2","velocity","depth","altitude","pitch","pitchrate","roll","rollrate","heading","headingrate","sonarpan","sonartilt","sonarroll","latitude","longitude","sonarposition","configflags","userassigned")
frameheader_formats=("i4","2i4","S4","i4","i4","i4","i4","i4","i4","i4","i4","i4","i4","i4","i4","i4","i4","i4","i4","i4","i4","i4","S16","S16","f","f","f","f","f","f","f","f","f","f","f","f","f8","f8","f","i4","S60")
data_format="uint8"
def __init__(self,infile):
dtype=dict(names=self.frameheader_fields,formats=self.frameheader_formats)
self.frameheader=np.fromfile(infile,dtype=dtype,count=1)
for field in self.frameheader_fields:
setattr(self,field,self.frameheader[field])
ncols,nrows=96,512
self.data=np.fromfile(infile,self.data_format,count=ncols*nrows)
self.data=self.data.reshape((nrows,ncols)) …Run Code Online (Sandbox Code Playgroud) 我将持续时间作为分钟存储在IntegerField中.在我的前端表单(模型表单)中,我想将输入分成一个字段分钟和一个字段几小时.我也希望能够使用InLineFormset.这可以以一种很好的方式完成吗?我可以使用javascript,但这对我来说不是一个很好的解决方案,或者是吗?
我想使用用户定义的类而不是 Qt 在Ui_MainWindow类中生成的类,以便我可以在 Qt 的 GUI 设计器上使用该控件。例如,目前它的定义如下:
class Ui_MainWindow
{
public:
QPlainTextEdit *list;
// ...
};
Run Code Online (Sandbox Code Playgroud)
我想使用我的用户定义的类:
class Ui_MainWindow
{
public:
MyCustomQPlainTextEdit *list;
// ...
};
Run Code Online (Sandbox Code Playgroud)
我不能只在 ui_mainwindow.h 头文件中手动修改它,因为每次 GUI 设计器生成其元数据时该值都会丢失。我可以阻止 Qt 使用该类,以便我可以使用自己的类吗?
custom-widgets ×13
android ×3
dart ×2
flutter ×2
pyqt ×2
pyqt4 ×2
python ×2
qt ×2
qt-designer ×2
c++ ×1
datepicker ×1
django ×1
frontend ×1
persian ×1
pyside ×1
qimage ×1
qt-creator ×1
qt4 ×1
qt5 ×1
stylesheet ×1
widget ×1
windows-10 ×1