1.这种行为的原因是什么?
请写print(self._old_x, new_x)看看结果。
就我而言,部分结果是这样的。
681 673
673 666
666 660
660 660
660 660
660 661
661 670
670 681
681 693
693 708
708 732
732 750
750 779
您可以在self._old_x 和new_x 之间看到相同的位置。
您还可以在结果中看到self._old_x 大于new_x。
为什么会出现同样的位置?
这很容易说...event.pos() 是QCursor.pos()。
但是您在mouseMoveEvent() 的第一行调用event.x() 和event.y()。
在event.x()、event.y()调用和new_x、new_y更新之间,有很短的时间。所以有时没有时间移动1。
这也是一个原因,但不是核心。
请在_update_bar写print(progress_bar.objectName(), new_value)
progressBar_y_plus 394
progressBar_x_minus 368
progressBar_y_plus 400
progressBar_x_minus 372
progressBar_y_plus 405
progressBar_x_minus 375
progressBar_y_plus 409
progressBar_x_minus 378
progressBar_y_plus 412
progressBar_x_minus 381
progressBar_y_plus 415
progressBar_x_minus 383
progressBar_y_plus 418
progressBar_x_minus 387
progressBar_y_plus 424
progressBar_x_minus 389
progressBar_y_plus 427
progressBar_x_minus 394
progressBar_y_plus 431
progressBar_x_minus 397
progressBar_y_plus 434
progressBar_x_minus 400
progressBar_y_plus 438
progressBar_x_minus 404
progressBar_y_plus 443
progressBar_x_minus 409
progressBar_y_plus 449
progressBar_x_minus 414
progressBar_y_plus 454
progressBar_x_minus 419
progressBar_y_plus 458
progressBar_x_minus 423
progressBar_y_plus 463
progressBar_x_minus 428
progressBar_y_plus 468
progressBar_x_minus 436
progressBar_y_plus 476
progressBar_x_minus 440
progressBar_y_plus 479
progressBar_x_minus 448
progressBar_y_plus 484
progressBar_x_minus 456
progressBar_y_plus 489
progressBar_x_minus 462
progressBar_y_plus 493
progressBar_x_minus 467
progressBar_y_plus 495
progressBar_x_minus 475
progressBar_y_plus 497
progressBar_x_minus 482
progressBar_y_plus 500
progressBar_x_minus 489
progressBar_x_minus 503
progressBar_y_plus 504
progressBar_x_minus 515
progressBar_x_minus 529
progressBar_x_minus 541
progressBar_x_minus 559
progressBar_x_minus 575
progressBar_x_minus 598
progressBar_x_minus 619
progressBar_x_minus 631
progressBar_x_minus 657
progressBar_x_minus 675
progressBar_x_minus 679
progressBar_x_minus 682
progressBar_x_minus 707
progressBar_y_minus 807
progressBar_x_minus 742
progressBar_y_minus 818
progressBar_x_minus 767
progressBar_y_minus 819
progressBar_x_minus 799
progressBar_x_minus 814
progressBar_x_minus 825
progressBar_y_minus 822
progressBar_x_minus 842
progressBar_y_minus 823
progressBar_x_minus 857
progressBar_y_minus 825
progressBar_x_minus 863
progressBar_y_minus 826
progressBar_x_minus 877
progressBar_y_minus 831
progressBar_x_minus 892
progressBar_x_minus 907
progressBar_x_minus 918
progressBar_y_minus 835
progressBar_x_minus 928
progressBar_x_minus 931
progressBar_x_minus 936
progressBar_x_minus 940
progressBar_x_minus 945
progressBar_x_minus 949
progressBar_x_minus 952
progressBar_x_minus 956
progressBar_x_minus 959
progressBar_x_minus 963
progressBar_x_minus 970
progressBar_x_minus 975
progressBar_x_minus 980
progressBar_x_minus 987
progressBar_x_minus 992
progressBar_x_minus 998
progressBar_x_minus 1002
progressBar_x_minus 1001
progressBar_x_minus 1000
progressBar_x_minus 1004
progressBar_x_minus 1003
progressBar_x_minus 1001
progressBar_x_minus 1001
progressBar_x_minus 1001
progressBar_x_minus 1001
progressBar_x_plus 475
progressBar_x_plus 482
progressBar_x_plus 496
progressBar_x_plus 509
progressBar_x_plus 524
progressBar_x_plus 548
progressBar_x_plus 579
progressBar_x_plus 614
progressBar_x_plus 673
progressBar_x_plus 718
progressBar_x_plus 756
progressBar_x_plus 788
progressBar_x_plus 826
progressBar_x_plus 848
progressBar_y_minus 836
progressBar_x_plus 898
progressBar_y_plus 507
progressBar_x_plus 940
progressBar_x_plus 978
progressBar_x_plus 993
progressBar_x_plus 1014
progressBar_x_plus 1014
progressBar_x_plus 1010
progressBar_x_plus 1016
progressBar_x_plus 1015
progressBar_y_plus 509
progressBar_x_plus 1018
progressBar_x_plus 1012
progressBar_x_plus 1011
progressBar_x_plus 1000
progressBar_x_plus 1012
progressBar_x_plus 1019
progressBar_x_plus 1015
progressBar_x_plus 1012
progressBar_x_plus 1015
progressBar_x_plus 1019
progressBar_x_plus 1015
progressBar_x_plus 1015
progressBar_x_plus 1012
progressBar_x_plus 1014
progressBar_x_plus 1005
progressBar_x_plus 1003
progressBar_x_plus 1009
progressBar_y_minus 839
progressBar_x_plus 1008
progressBar_y_minus 841
progressBar_x_plus 1012
progressBar_y_minus 844
progressBar_x_plus 1011
progressBar_y_minus 848
progressBar_x_plus 1006
progressBar_y_minus 851
progressBar_x_plus 1007
progressBar_y_minus 855
progressBar_x_plus 1006
progressBar_y_minus 860
progressBar_x_plus 1007
progressBar_y_minus 865
progressBar_x_plus 1001
progressBar_y_minus 866
progressBar_x_plus 1001
progressBar_x_plus 1004
progressBar_y_minus 872
progressBar_x_plus 1005
progressBar_y_minus 881
progressBar_x_plus 1005
progressBar_y_minus 889
progressBar_x_plus 1007
progressBar_y_minus 898
progressBar_x_plus 1004
progressBar_y_minus 907
progressBar_x_plus 1005
progressBar_y_minus 917
progressBar_x_plus 1005
progressBar_y_minus 931
progressBar_x_plus 1004
progressBar_y_minus 941
progressBar_x_plus 1004
progressBar_y_minus 952
progressBar_x_plus 1005
progressBar_y_minus 965
progressBar_x_plus 1002
progressBar_y_minus 977
progressBar_x_plus 1001
progressBar_y_minus 991
progressBar_x_plus 1001
progressBar_y_minus 1004
progressBar_y_minus 1005
progressBar_x_plus 1003
progressBar_y_minus 1001
progressBar_y_minus 1007
progressBar_y_minus 1004
progressBar_y_minus 1005
progressBar_y_minus 1005
progressBar_x_minus 1003
progressBar_y_minus 1001
progressBar_x_minus 1004
progressBar_y_minus 1004
progressBar_y_minus 996
progressBar_x_minus 1006
progressBar_y_minus 1007
progressBar_x_minus 1008
progressBar_y_minus 1007
progressBar_x_minus 1007
progressBar_y_minus 1007
progressBar_x_minus 1008
progressBar_y_minus 1009
progressBar_x_minus 1009
progressBar_y_minus 1007
progressBar_x_minus 1005
progressBar_y_minus 1005
progressBar_x_minus 1010
progressBar_y_minus 1006
progressBar_x_minus 1007
progressBar_y_minus 1004
progressBar_x_minus 1010
progressBar_y_minus 1004
progressBar_x_minus 1008
progressBar_y_minus 1001
progressBar_x_minus 1008
progressBar_y_minus 1005
progressBar_x_minus 1013
progressBar_y_minus 1005
progressBar_x_minus 1012
progressBar_y_minus 1003
progressBar_x_minus 1023
progressBar_y_minus 1004
progressBar_x_minus 1013
progressBar_y_minus 1003
progressBar_x_minus 1016
progressBar_y_minus 1003
progressBar_x_minus 1015
progressBar_y_minus 1003
progressBar_x_minus 1014
progressBar_y_minus 1002
progressBar_x_minus 1018
progressBar_y_minus 1000
progressBar_x_minus 1015
progressBar_y_minus 1005
progressBar_x_minus 1009
progressBar_y_minus 1002
progressBar_x_minus 1018
progressBar_y_minus 1003
progressBar_x_minus 1015
progressBar_y_minus 1003
progressBar_x_minus 1014
progressBar_y_minus 1001
progressBar_x_minus 1015
progressBar_y_minus 1005
progressBar_x_minus 1009
progressBar_x_minus 1012
progressBar_y_minus 1001
progressBar_x_minus 1012
progressBar_x_minus 1014
progressBar_x_minus 1008
progressBar_x_minus 1014
progressBar_x_minus 1012
progressBar_x_minus 1015
progressBar_x_minus 1014
progressBar_x_minus 1012
progressBar_x_minus 1013
progressBar_x_minus 1014
progressBar_y_plus 512
progressBar_x_minus 1014
progressBar_y_plus 515
progressBar_x_minus 1014
progressBar_y_plus 519
progressBar_x_minus 1018
progressBar_y_plus 525
progressBar_x_minus 1009
progressBar_y_plus 528
progressBar_x_minus 1012
progressBar_y_plus 532
progressBar_x_minus 1013
progressBar_y_plus 536
progressBar_x_minus 1014
progressBar_y_plus 540
progressBar_x_minus 1010
progressBar_y_plus 546
progressBar_x_minus 1015
progressBar_y_plus 553
progressBar_x_minus 1012
progressBar_y_plus 558
progressBar_x_minus 1010
progressBar_y_plus 565
progressBar_x_minus 1012
progressBar_y_plus 572
progressBar_x_minus 1013
progressBar_y_plus 580
progressBar_x_minus 1008
progressBar_y_plus 586
progressBar_x_minus 1012
progressBar_y_plus 596
progressBar_x_minus 1010
progressBar_y_plus 604
progressBar_x_minus 1009
progressBar_y_plus 612
progressBar_x_minus 1010
progressBar_y_plus 623
progressBar_x_minus 1006
progressBar_y_plus 629
progressBar_x_minus 1007
progressBar_y_plus 637
progressBar_x_minus 1005
progressBar_y_plus 648
progressBar_x_minus 1003
progressBar_y_plus 655
progressBar_x_minus 1002
progressBar_y_plus 663
progressBar_x_minus 1003
progressBar_y_plus 673
progressBar_x_minus 1004
progressBar_y_plus 684
progressBar_x_minus 1001
progressBar_y_plus 693
progressBar_y_plus 702
progressBar_y_plus 712
progressBar_y_plus 713
progressBar_y_plus 718
progressBar_y_plus 724
progressBar_x_plus 1001
progressBar_y_plus 734
progressBar_x_plus 1002
progressBar_y_plus 743
progressBar_y_plus 757
progressBar_y_plus 769
progressBar_y_plus 780
progressBar_y_plus 794
progressBar_y_plus 803
progressBar_y_plus 815
progressBar_y_plus 822
progressBar_x_plus 1003
progressBar_y_plus 829
progressBar_x_plus 1002
progressBar_y_plus 836
progressBar_x_plus 1002
progressBar_y_plus 844
progressBar_x_plus 1004
progressBar_y_plus 850
progressBar_x_plus 1002
progressBar_y_plus 857
progressBar_x_plus 1004
progressBar_y_plus 865
progressBar_x_plus 1002
progressBar_y_plus 872
progressBar_x_plus 1006
progressBar_y_plus 880
progressBar_x_plus 1002
progressBar_y_plus 884
progressBar_x_plus 1002
progressBar_y_plus 893
progressBar_x_plus 1003
progressBar_y_plus 899
progressBar_x_plus 1003
progressBar_y_plus 905
progressBar_x_plus 1002
progressBar_y_plus 907
progressBar_x_plus 1002
progressBar_x_plus 1002
progressBar_y_plus 913
progressBar_x_plus 1001
progressBar_y_plus 918
progressBar_x_plus 1004
progressBar_y_plus 924
progressBar_x_plus 1001
progressBar_y_plus 927
progressBar_y_plus 931
progressBar_x_plus 1003
progressBar_y_plus 938
progressBar_x_plus 1002
progressBar_y_plus 941
progressBar_x_plus 1002
progressBar_y_plus 945
progressBar_x_plus 1004
原因 1。
我假设progressBar 将1000 计为100%。所以990 ~ 999 计为99%。
停止在 99% 时,通常会发生鼠标移动比以前慢的情况(因为鼠标指向屏幕边缘。)有时我们可以很快达到 100%。
原因 2。
你把new_x,new_y更新成self.old_x,self.old_y,所以贵重物品差不多了。好像很容易就从99升到100了。大部分可以到100 %很快。但事实并非总是如此。因为即使你加990 + 11,即使点数超过1000,进度条也不会变成100%...... 这是核心原因停止在 99%。
作为证据,你写_update_bar,例如,new_value = 900 + 11,你喜欢的任何数字,但结果必须超过1000。你的进度条绝对不会变满。相反,他们根本不动。
progressBar_y_minus 992
109 132
progressBar_y_minus 1012
98 121
我想让你慢慢移动鼠标。你可以看到你达到 100% 比你更快地移动鼠标容易。因为问题是移动宽度为 9** ~ 1000。
如果你移动鼠标的速度更快,self._pos_x 和 event.pos().x() 会做一个很大的宽度。为此,它会导致无法达到 100%,反之亦然。
所以如果我将鼠标从我的电脑窗口的左侧位置快速移动到右侧位置,进度条根本不会增加。如果你在 99%,效果就很明显了。
当你圈住鼠标的移动时,你经常会看到 99%。
但我认为如果你慢慢做,你可以毫无问题地达到100%。
盘旋包含所有方向移动。它不是一个进度条。
直到一个移动结束,下一个有时不会增加。
我假设盘旋使宽度逐渐变宽,比其他移动更容易达到99%。
假新闻。
与桌面大小无关。
2.如何修复代码,让 QProgessBar 在 99% 时没有中断?
如果你理解了1的解释,你可以通过这段代码来逃避。
请尝试在_update_bar y punto 中编写此代码...
if new_value > 1000:
new_value = 1000