小编Haf*_*uss的帖子

Qt布局,在窗口小部件大小更改后调整为最小值

基本上我QGridLayout有一些小部件.重要的是2个标签,我用它们将图像绘制到屏幕上.好吧,如果用户想要,他可以改变传入图像的分辨率,从而迫使标签调整大小.

我们假设标签的初始大小是320x240.用户将VideoMode更改为640x480,标签和整个GUI完美调整大小.但是当用户切换回时320x240,标签会缩小,但布局/窗口不会缩小.

我打得四处sizePoliciessizeHintsresize(0,0),但没有做的伎俩.有人可以帮我这个吗?

这里有一些截图来澄清问题:

在这里,一切都很好 仍然,640 x 480完美调整大小 但在这里,布局太大了.

layout qt qgridlayout qt5

22
推荐指数
2
解决办法
3万
查看次数

Django 在遥远的未来运行任务(可能)

假设我有一个模型Event。我想在活动结束后向所有受邀用户发送通知(电子邮件、推送等)。类似的东西:

class Event(models.Model):
    start = models.DateTimeField(...)
    end = models.DateTimeField(...)
    invited = models.ManyToManyField(model=User)

    def onEventElapsed(self):
        for user in self.invited:
           my_notification_backend.sendMessage(target=user, message="Event has elapsed")

Run Code Online (Sandbox Code Playgroud)

现在,当然,关键部分是调用onEventElapsedwhen timezone.now() >= event.end。请记住,end距离当前日期可能还有几个月的时间。

我想过两种基本的方法来做到这一点:

  1. 使用定期cron作业(例如,每五分钟左右)检查过去五分钟内是否发生了任何事件并执行我的方法。

  2. 使用celery和调度onEventElapsed使用eta将来要运行的参数(在模型save方法中)。

考虑选项 1,一个潜在的解决方案可能是django-celery-beat。但是,以固定的时间间隔运行任务以发送通知似乎有点奇怪。此外,我提出了一个(潜在的)问题,它(可能)会导致一个不太优雅的解决方案:

  • 每五分钟检查一次过去五分钟内发生的事件?似乎不稳定,也许有些事件被错过了(或者其他人的通知发送了两次?)。潜在的解决方法:向模型添加一个布尔字段,该字段设置为True一旦发送通知。

再说一次,选项 2 也有它的问题:

  • 手动处理事件开始/结束日期时间移动时的情况。使用时celery,必须存储taskID(easy, ofc) 并在日期更改后撤销任务并发出新任务。但我读过,芹菜在处理将来运行的任务时有(特定于设计的)问题:github 上的 Open Issue。我意识到这是如何发生的,以及为什么要解决这一切都是微不足道的。

现在,我遇到了一些可能会解决我的问题的库:

  • celery_longterm_scheduler(但这是否意味着我不能像以前那样使用 celery,因为不同的 Scheduler 类?这也与django-celery-beat...的可能用法有关。使用这两个框架中的任何一个,是否仍然可以排队作业(只是运行时间更长但不是几个月?)
  • django-apscheduler,使用apscheduler. …

python django celery apscheduler django-celery-beat

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

OpenGL ES 2.0屏幕闪烁

我面临一个大问题.我正在使用带有Android 4.0.3的Transformer tf101标签.

我的应用程序使用自定义OpenGL ES 2.0表面.我正在使用纹理渲染多个平面.这种纹理正在改变.每秒20次,并通过传递字节数组进行更新.但是,在某些情况下,屏幕开始闪烁并且不会渲染新纹理.其他UI元素仍然响应并按预期执行其工作.似乎OpenGL上下文忽略了所有命令并且没有响应.

发生这种情况时,我的logCat中会显示几行:

08-20 10:31:15.390: D/NvOsDebugPrintf(2898): NvRmChannelSubmit: NvError_IoctlFailed with error code 1
Run Code Online (Sandbox Code Playgroud)

其次是

08-20 10:31:15.390: D/NvOsDebugPrintf(2898): NvRmChannelSubmit failed (err = 13, SyncPointValue = 879005, returning = 0)
Run Code Online (Sandbox Code Playgroud)

以及其中一些:

08-20 10:31:15.390: D/NvOsDebugPrintf(2898): NvRmChannelSubmit failed (err = 196623, SyncPointValue = 0)
Run Code Online (Sandbox Code Playgroud)

这是我如何创建我的纹理平面:

    m_nTextureStorage[0] = 0;

    GLES20.glGenTextures( 1, m_nTextureStorage, 0);
    GLES20.glActiveTexture( GLES20.GL_TEXTURE0 );
    GLES20.glBindTexture( GLES20.GL_TEXTURE_2D, m_nTextureStorage[ 0 ] );

    // Set filtering
    GLES20.glTexParameterf( GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_NEAREST );
    GLES20.glTexParameterf( GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_NEAREST );
    GLES20.glTexParameteri( GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_S, GLES20.GL_CLAMP_TO_EDGE );
    GLES20.glTexParameteri( GLES20.GL_TEXTURE_2D, …
Run Code Online (Sandbox Code Playgroud)

android opengl-es-2.0

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

如何在没有所有软件包版本的情况下创建requirement.txt

现在我requirement.txt包含以下软件包列表:

asgiref==3.2.3
beautifulsoup4==4.8.2
certifi==2019.11.28
chardet==3.0.4
Click==7.0
Django==3.0.2
idna==2.8
pytz==2019.3
requests==2.22.0
six==1.14.0
soupsieve==1.9.5
sqlparse==0.3.0
urllib3==1.25.7

Run Code Online (Sandbox Code Playgroud)

我只想要包名称,以便 pip3 始终安装最新版本。

python pip virtualenv

8
推荐指数
2
解决办法
2万
查看次数

无论项目如何,QComboBox都会设置标题文本

我有一个带有QStandardModel的QComboBox,我通过以下方式添加项目:

QStandardItem * item = new QStandardItem();
item->setText("someText");
item->setCheckable(true);

item->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled);
item->setData(Qt::Checked, Qt::CheckStateRole);

m_model->appendRow(item);
m_ComboBox->setModel(m_model);
Run Code Online (Sandbox Code Playgroud)

这给了我一个带复选框的组合框,这正是我想要的.现在,当用户取消选择所有项目时,"无"应该是下拉菜单的文本.如果用户选择了一些项目,则"多个"将是文本.

我还没有找到如何设置QComboBox的标题文本的方法.除了子类化和自己做之外没有方便的方法吗?

c++ qt qt5

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

Django 过滤:模型实例与模型 pk

我偶然发现了 Django 中的一些相当奇怪的行为(至少对我来说是这样)。我不确定这是否受支持/允许的行为。

假设我有以下模型:

class Club
    name = CharField(....)
    memberships = models.ManyToManyField(Person, through=ClubMembership, related_name='clubs')

    def getMembership(self, personID):
        return ClubMembership.objects.get(club_id=self.id, person_id=personID)
Run Code Online (Sandbox Code Playgroud)

显然,getMembership返回关联的ClubMembership实例(现在,我们假设我们只为实际上在俱乐部中的人调用此方法)。

现在,当调用这个方法时,我发现:

club = Club.objects.get(...)
person = Person.objects.get(...)

membership = club.getMembership(person)
Run Code Online (Sandbox Code Playgroud)

club = Club.objects.get(...)
person = Person.objects.get(...)

membership = club.getMembership(person.id)
Run Code Online (Sandbox Code Playgroud)

都产生正确的成员资格。/方法内部是否发生了一些魔法来检查 passend 关键字 (for ) 实际上是整数 (pk) 还是模型实例?filtergetperson_id

如果两者都有效且被允许,会产生什么影响?性能方面有什么差异吗?哪种方法是首选方法?

Ofc 我可以过滤整个人员模型,而不仅仅是 id,如下所示:

def getMembership(self, person):
        return ClubMembership.objects.get(club_id=self.id, person=person)
Run Code Online (Sandbox Code Playgroud)

但据我所知,这会慢很多,对吧?

python django

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

检索所有Animator状态并在代码中手动设置它们

我偶然发现了一些我从未想过的问题,但是...确实如此。我正在使用unity 5.5编写visualiazion / simulation工具箱。

使用的模型已经导入,并且通过编辑器设置了动画剪辑。这是我的动画状态控制器的外观:

动画状态控制器 我想在DropdownMenu中显示AnimationStates。每当用户选择一项时,当前动画状态都应设置为所选状态。

eG用户选择了自动播放:将状态设置为剪辑自动播放,然后设置为SimpleRotate,然后设置为ComplexRotate,然后再次设置为自动播放(只是一个简单的循环)。

但是,如果用户选择“空闲”,“ ComplexRotate 0”或“ SimpleRotate 0”,则动画应播放一次,然后停留在剪辑的结尾。(就像我在动画控制器中所做的一样。

这是我想要的一个相当伪的版本:

//Retrieve all states to populate the dropdown:
List<AnimationState> states = myAnimationController.GetAllStates();

foreach(AnimationState state in states)
  Dropdown.add(state.name)


//callback
OnDropdownIndexChanged(int item)
{
  string stateName = ..... //removed for simplicity
  myAnimationController.setState(stateName)
}
Run Code Online (Sandbox Code Playgroud)

最重要的是,如果我可以检查FROM和TO状态之间的转换,那就太好了。(自动播放是应该在循环的下拉菜单中显示的唯一状态)

可以通过自定义动画控制器实现此功能吗?还是我错过了什么?

c# unity-game-engine unity5 unity3d-mecanim

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